Я новичок в Ubuntu. Я выучил команду
nohup [command]
- работать <command>
невосприимчивым к сигналу зависания
Я не могу понять значение слова « невосприимчив к сигналу зависания ». О каком типе сигнала идет речь? И, пожалуйста, скажите мне, как использовать эту команду с примером.
command-line
nohup
coding_ninza
источник
источник
disown
это лучшая альтернативаnohup
. Фоновая команда с помощьюcommand &
илиCtrl-Z
, затем используйте,disown
чтобы отделить ее от оболочки.Ответы:
Давайте рассмотрим, как вы открыли
gedit
текстовый редактор из терминала и работаете над ним. Если вы закрываете терминал перед закрытиемgedit
, gedit также закрывается сразу после закрытия терминала. и так, что здесь происходит?gedit
Работает как дочерний процесс под терминалом. Когда вы закрываете терминал, в процесс отправляется сигнал об окончании (SIGHUP
), который убивает дочерний процесс.С другой стороны, если вы хотите, чтобы ваш дочерний процесс (здесь
gedit
) продолжал работать даже после закрытия родительского терминала, вы хотели бы, чтобы ваш процесс был защищен от сигнала зависания. Так что закрытие терминала не закрывает дочерний процесс.nohup
делает именно эту работу.nohup
не отключает команду от терминала , это заставляет ваш скрипт игнорировать SIGHUP и перенаправляет stdout / stderr в файл nohup.out, чтобы команда могла продолжить работу в фоновом режиме после выхода из системы. Если вы закрываете оболочку / терминал или выходите из системы, ваша команда больше не является дочерней для этой оболочки. Это относится к процессу инициализации. Если вы выполните поиск,pstree
вы увидите, что он принадлежит процессу 1 (init). Это не может быть возвращено на передний план, потому что передний план больше не существует.источник
Помимо того, что написал @sourvac, это наследие Back In The Day, когда люди заходили в систему только через текстовые немые терминалы, часто через (оригинальный, аналоговый 110 бод) модем: «зависание» буквально «вешает трубку» ».
Пид, невосприимчивый к сигналу зависания, будет продолжать работать даже после того, как вы выйдете из системы и повесите трубку . Это было очень полезно на медленных компьютерах, когда задания выполнялись часами и часами, и вы не могли просто оставаться в системе (кому-то еще нужно было использовать терминал, вам нужно было использовать телефон, статическая связь в линии могла бы «поднять» соединение , и т.д).
источник