Подтвердить что ты не робот

Что означает "&" в конце командной строки?

Я системный администратор, и меня попросили запустить linux script для очистки системы.

Команда такова:

perl script.pl > output.log &

чтобы эта команда заканчивалась знаком &, есть ли какое-то особое значение?

У меня есть базовые знания оболочки, но я никогда раньше этого не видел.

4b9b3361

Ответ 1

& выполняет команду в фоновом режиме.

От man bash:

Если команда завершена оператором управления &, оболочка выполняет команду в фоновом режиме в подоболочке. Оболочка не дожидаться завершения команды и        статус возврата равен 0.

Ответ 2

Кроме того, вы можете использовать "&" чтобы запускать много процессов через одно (1) ssh-соединения, чтобы поддерживать минимальное количество терминалов. Например, у меня есть один процесс, который прослушивает сообщения для извлечения файлов, второй процесс прослушивает сообщения для загрузки файлов: используя "&" Я могу запускать обе службы в одном терминале, через одно подключение ssh к моему серверу.


***** Я только понял, что эти процессы проходят через "&" также будет "оставаться в живых" после закрытия сессии ssh! довольно аккуратно и полезно, если ваше соединение с сервером прерывается **

Ответ 3

Если не указано иное, команды переходят на передний план. У вас есть только один процесс "переднего плана", выполняющийся в одном сеансе оболочки. Символ и указывает команды для запуска в фоновом процессе и немедленно возвращаются в командную строку для дополнительных команд.

sh my_script.sh &

Фоновый процесс не останется в живых после закрытия сеанса оболочки. SIGHUP завершает все запущенные процессы. По умолчанию в любом случае. Если ваша команда работает долго или работает неограниченно (т.е. Микросервис), вам необходимо перенести ее без nohup, чтобы она оставалась безнадежной после отключения от сеанса:

nohup sh my_script.sh &

РЕДАКТИРОВАТЬ: Кажется, что существует серая область, касающаяся закрытия фоновых процессов, когда и используется. Просто имейте в виду, что оболочка может закрыть ваш процесс в зависимости от вашей ОС и локальных конфигураций (особенно на CENTOS/RHEL):  https://serverfault.com/a/117157.