Какова функция команды nohup?

18

Я новичок в Ubuntu. Я узнал команду

nohup [command] - запустить <command> невосприимчивость к сигналу зависания

Я не могу понять значение « невосприимчивого к сигналу зависания ». О каком типе сигнала это говорит? И, пожалуйста, расскажите, как использовать эту команду с примером.

    
задан coding_ninza 12.01.2018 в 14:52
источник

2 ответа

34

Давайте рассмотрим, что вы открыли текстовый редактор gedit с терминала и работали над ним. Если вы закрываете терминал до закрытия gedit , gedit также закрывается, как только закрывается терминал. и так, что здесь происходит? gedit работает как дочерний процесс под терминалом. Когда вы закрываете терминал, в процесс, который убивает дочерний процесс, отправляется сигнал зависания ( SIGHUP ).

С другой стороны, если вы хотите, чтобы ваш дочерний процесс (здесь gedit ) продолжал работать даже после закрытия родительского терминала, вы хотели бы, чтобы ваш процесс был невосприимчивым к сигналу зависания. Чтобы закрыть терминал, не закрывайте дочерний процесс. nohup выполняет именно эту работу.

nohup не отключает команду от терминала , это заставляет ваш скрипт игнорировать SIGHUP и перенаправляет stdout / stderr в файл nohup.out, чтобы команда могла продолжить работу в фоновом режиме после выхода из системы. Если вы закрываете оболочку / терминал или выходите из системы, ваша команда больше не является дочерним элементом этой оболочки. Он принадлежит процессу init. Если вы выполните поиск в pstree , вы увидите, что теперь он принадлежит процессу 1 (init). Это невозможно вернуть на передний план, поскольку передний план больше не существует.

    
ответ дан souravc 12.01.2018 в 15:11
источник
16

Кроме того, что написал @sourvac, это наследие от Back In The Day, когда люди вошли в систему через текстовые только немые терминалы, часто через (оригинальный, аналоговый 110 бод) модем: «зависание» буквально «висит» вверх по телефону ".

Пид, который невосприимчив к сигналу зависания , будет продолжать работать даже после выхода из системы и повесить трубку телефона . Это было очень полезно на компьютерах slow , когда задания выполнялись в течение нескольких часов в часах, и вы не могли просто оставаться в системе (кто-то еще должен был использовать терминал, вам нужно было использовать телефон, статический в строка может «bzzt» соединение и т. д.).

    
ответ дан RonJohn 12.01.2018 в 16:14