У меня есть скрипт, который запускает несколько фоновых процессов и работает нормально при вызове из командной строки.
Однако тот же скрипт также вызывается во время запуска xsession и дополнительно при некоторых событиях udev. В обоих случаях фоновые процессы исчезают.
Я поместил sleep 10 в скрипт и увидел, что процессы bg действительно запущены, но как только скрипт существует, он забирает с собой процессы bg. Я попытался решить проблему, вызвав процессы bg с помощью start_stop_deamon --background
, но это не помогло. Однако я могу вызвать скрипт из консоли и выйти из сеанса, а процессы bg все еще работают.
Помимо решения моей непосредственной проблемы (хотя любая помощь будет оценена по достоинству), я хочу понять логику, стоящую за всем этим. Я подозреваю, что что-то связано с отсутствием терминала.
решение1
Защитите свои процессы с помощью nohup
:
nohup command-name &
Вы также можете использовать этот метод, если хотите игнорировать перенаправление stdout и stderr в nohup.out:
command-name & disown