Понимание того, когда фоновый процесс завершается

Понимание того, когда фоновый процесс завершается

У меня есть скрипт, который запускает несколько фоновых процессов и работает нормально при вызове из командной строки.

Однако тот же скрипт также вызывается во время запуска xsession и дополнительно при некоторых событиях udev. В обоих случаях фоновые процессы исчезают.

Я поместил sleep 10 в скрипт и увидел, что процессы bg действительно запущены, но как только скрипт существует, он забирает с собой процессы bg. Я попытался решить проблему, вызвав процессы bg с помощью start_stop_deamon --background, но это не помогло. Однако я могу вызвать скрипт из консоли и выйти из сеанса, а процессы bg все еще работают.

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

решение1

Защитите свои процессы с помощью nohup:

nohup command-name &

Вы также можете использовать этот метод, если хотите игнорировать перенаправление stdout и stderr в nohup.out:

command-name & disown

Связанный контент