Nohup

Если «родитель» завершает свою работу раньше потомка, у потомка меняется значение PPID на 1, то есть потомок продолжает работу, но уже с новым родителем. Процесс с PID 1 — это программа init. Init запускается самим ядром операционной системы при её старте. До тех пор пока работает init, работает Linux.

Правда, существуют исключения из этого правила. Если завершает работу программа-оболочка, в которой работал пользователь, завершают работу все программы, запущенные из этого экземпляра shell.

При необходимости продолжения выполнения программы после выхода пользователя из системы используют программу nohup.

nohup программа [параметры программы]...

При завершении работы управляющей оболочки все программы получают уведомление об отключении от терминала и должны завершить свою работу. Nohup заставляет программу игнорировать получаемое уведомление, и она (программа) продолжает свою работу даже после завершения работы оболочки.

Запуск программы происходит следующим образом:

nohup program &

Программа запускается. Отключается от терминала. Получает нового родителя — процесс init. Всё это демонстрирует вывод следующей программы.

$ ps -eo pid,ppid,tty,cmd | grep program
4955     1 ?        program
$

После запуска, nohup создаёт файл nohup.out в который помещает то, что программа выводила на стандартный вывод или вывод ошибки.