Я никогда не знаю, когда лучше всего использовать nohup и & в конце команды.
Nohup заставляет программу игнорировать сигнал HUP, позволяя запустить его после закрытия текущего терминала / выхода пользователя из системы. Nohup не отправляет программу в фоновый режим.
& в конце команды относится к управлению заданиями оболочки, позволяя пользователю продолжить работу в текущем сеансе оболочки.
Обычно nohup и & объединяются для запуска программы, которая запускается после выхода из системы пользователя и позволяет продолжить работу в текущем сеансе оболочки.
Обычно я использую, &
когда хочу запустить в фоновом режиме команду, выполнение которой не займет много времени, или команду, в которой меня не волнует, завершится ли программа, если я неожиданно выйду из сеанса.
xcalc &
rdesktop 1.2.3.4 &
./this_only_takes_a_few_seconds_but_i_want_my_shell_back.py &
При работе через VPN или изворотливое удаленное соединение, я склонен использовать nohup
для запуска все, что потребуется для запуска. Например, при выполнении импорта больших данных на удаленном хосте вы, возможно, захотите использовать его, nohup
чтобы избежать повторного подключения при повторном подключении.
nohup ./do_data_load.py mydatafile.txt &
Он также используется, когда разработчик должным образом не демонизирует сервис, поэтому вы должны использовать его, nohup
чтобы убедиться, что он не уничтожен при выходе из системы.
nohup sillyd &
Если вы забыли использовать nohup
при запуске что-то похожее на два последних примера, вы можете использовать встроенные команды bash или zsh disown
для того же эффекта.
$ sillyd &
[1] 12345 # Whoops!
$ disown %1
Это довольно редко, чтобы использовать nohup
без &
, так как вы не можете подключиться к сеансу nohup'd, если вы вышли из системы. Это в значительной степени исключает его полезность для интерактивных команд. Если у вас есть интерактивная команда, которую вы хотите сохранить в сеансах или избежать сложных отключений, вы можете использовать ее screen
. Огневая мощь полностью вооруженного и оперативного screen
сеанса выходит за рамки этого поста, поэтому вы должны проверить его более подробно .
byobu
что добавляет некоторые полезные функции на экране. Он доступен в большинстве подходящих репозиториев и в репозиториях EPEL для Red Hat.nohup: выйти из системы текущего пользователя, процесс не остановится
&: с этим символом в текущем терминале не будет выхода, процесс работает в фоновом режиме
источник