История изменений
Исправление Aber, (текущая версия) :
Что значит «команда будет продолжать выполняться в фоновом режиме и после того, как пользователь выйдет из системы»?
Когда ты закрываешь терминал ядро должно послать дочерним процессам сигнал HUP, процессы должны самостоятельно его отработать и завершить свою работу.
Это похоже на то как обрабатывается Ctrl+C, когда процессу посылается сигнал TERM, который можно послать явно выполнив kill -SIGTERM <pid>
.
Процесс на принятый сигнал сам решает что делать. Конечно когда ты собираешь helloworld то компиллер добавит дефолтные обработчики по стандарту. Но ничего не мешает сделать свой кастомный обработчик. Например сервисы/демоны на сигнал HUP просто обновляют свою конфигурацию, т.е. ты обновил конфиг и хочешь чтоб он применился без перезапуска процесса, то можешь послать ему сигнал: kill -SIGHUP <pid>
(разумеется это работает если это было предусмотрено, для nginx работает).
Только KILL не дает выбор процессу, kill -9 <pid>
или kill -SIGKILL <pid>
ядро завершит процесс принудительно.
По всему выше написанному должно стать понятно что nohup просто не передает сигнал HUP дочернему процессу.
Исходная версия Aber, :
Что значит «команда будет продолжать выполняться в фоновом режиме и после того, как пользователь выйдет из системы»?
Когда ты закрываешь терминал ядро должно послать дочерним процессам сигнал HUP, процессы должны самостоятельно его отработать и завершить свою работу.
Это похоже на то как обрабатывается Ctrl+C, когда процессу посылается сигнал TERM, который можно послать явно выполнив kill -SIGTERM <pid>
.
Процесс на принятый сигнал сам решает что делать. Конечно когда ты собираешь helloworld то компиллер добавит дефолтные обработчики по стандарту. Но ничего не мешает сделать свой кастомный обработчик. Например сервисы/демоны на сигнал HUP просто обновляют свою конфигурацию, т.е. ты обновил конфиг и хочешь чтоб он примерился без перезапуска процесса, то можешь послать ему сигнал: kill -SIGHUP <pid>
(разумеется это работает если это было предусмотрено, для nginx работает).
Только KILL не дает выбор процессу, kill -9 <pid>
или kill -SIGKILL <pid>
ядро завершит процесс принудительно.
По всему выше написанному должно стать понятно что nohup просто не передает сигнал HUP дочернему процессу.