Ответ 1
&
выполняет команду в фоновом режиме.
От man bash
:
Если команда завершена оператором управления &, оболочка выполняет команду в фоновом режиме в подоболочке. Оболочка не дожидаться завершения команды и статус возврата равен 0.
Я системный администратор, и меня попросили запустить linux script для очистки системы.
Команда такова:
perl script.pl > output.log &
чтобы эта команда заканчивалась знаком &
, есть ли какое-то особое значение?
У меня есть базовые знания оболочки, но я никогда раньше этого не видел.
&
выполняет команду в фоновом режиме.
От man bash
:
Если команда завершена оператором управления &, оболочка выполняет команду в фоновом режиме в подоболочке. Оболочка не дожидаться завершения команды и статус возврата равен 0.
Кроме того, вы можете использовать "&" чтобы запускать много процессов через одно (1) ssh-соединения, чтобы поддерживать минимальное количество терминалов. Например, у меня есть один процесс, который прослушивает сообщения для извлечения файлов, второй процесс прослушивает сообщения для загрузки файлов: используя "&" Я могу запускать обе службы в одном терминале, через одно подключение ssh к моему серверу.
***** Я только понял, что эти процессы проходят через "&" также будет "оставаться в живых" после закрытия сессии ssh! довольно аккуратно и полезно, если ваше соединение с сервером прерывается **
Если не указано иное, команды переходят на передний план. У вас есть только один процесс "переднего плана", выполняющийся в одном сеансе оболочки. Символ и указывает команды для запуска в фоновом процессе и немедленно возвращаются в командную строку для дополнительных команд.
sh my_script.sh &
Фоновый процесс не останется в живых после закрытия сеанса оболочки. SIGHUP завершает все запущенные процессы. По умолчанию в любом случае. Если ваша команда работает долго или работает неограниченно (т.е. Микросервис), вам необходимо перенести ее без nohup, чтобы она оставалась безнадежной после отключения от сеанса:
nohup sh my_script.sh &
РЕДАКТИРОВАТЬ: Кажется, что существует серая область, касающаяся закрытия фоновых процессов, когда и используется. Просто имейте в виду, что оболочка может закрыть ваш процесс в зависимости от вашей ОС и локальных конфигураций (особенно на CENTOS/RHEL): https://serverfault.com/a/117157.