我有一个脚本,它启动多个后台进程,并且从命令行调用时工作正常。
然而,在我的 xsession 启动期间以及一些 udev 事件中也会调用相同的脚本。在这两种情况下,后台进程都会消失。
我在脚本中放入了 sleep 10 ,我可以看到 bg 进程确实已启动,但是一旦脚本存在,它就会占用 bg 进程。我尝试通过调用 bg 进程来解决start_stop_deamon --background
,但这没有什么区别。然而,我可以从控制台调用脚本并退出会话,并且 bg 进程仍在运行。
除了解决我眼前的问题(尽管我们将不胜感激任何帮助)之外,我还热衷于了解这一切背后的逻辑。我怀疑与缺少终端有关。
答案1
使用以下方式保护您的流程nohup
:
nohup command-name &
如果您想忽略 stdout 和 stderr 重定向到 nohup.out,也可以使用此技术:
command-name & disown