3

Итак, я прочитал две разные точки зрения и пытаюсь выяснить, какая из них правильная.

1) Некоторые источники в сети говорят, что сигналы, отправленные с управляющего терминала, ТОЛЬКО отправляются в группу процессов переднего плана. Это означает, что если вы хотите, чтобы процесс продолжал работать в фоновом режиме при выходе из системы, достаточно просто приостановить задание (ctrl-Z) и возобновить его в фоновом режиме (bg). Затем вы можете выйти из системы, и она продолжит работать, потому что SIGHUP отправляется только на передний план.

Смотрите: http://blog.nelhage.com/2010/01/a-brief-introduction-to-termios-signaling-and-job-control/

...Кроме того, если какой-либо символ, генерирующий сигнал, считывается терминалом, он генерирует соответствующий сигнал для группы процессов переднего плана ...

2) Другие источники утверждают, что вам нужно использовать команду "nohup" во время выполнения программы или, если это не удалось, введите во время выполнения команду "disown", чтобы удалить ее из таблицы заданий, которая прослушивает SIGHUP. Они говорят, что если вы не сделаете этого при выходе из системы, ваш процесс также завершится, даже если он выполняется в группе фоновых процессов.

Например: http://docstore.mik.ua/orelly/unix3/upt/ch23_11.htm

...Если я все равно выйду из системы, оболочка отправит моему фоновому заданию сигнал HUP ...

В моих собственных экспериментах с Ubuntu Linux это выглядит как 1) правильно. Я выполнил команду: «sleep 20 &», затем вышел из системы, снова вошел в систему и нажал "ps aux". Конечно, команда сна все еще работала.

Итак, почему же так много людей, кажется, верят в число 2? И если все, что вам нужно сделать, это поместить работу в фоновом режиме, чтобы она работала, почему так много людей используют "nohup" и "disown"?"

0