我正在尝试将我的程序作为守护进程运行,但我目前的做法需要根访问权限。我想知道是否可以使用带有 & 的 nohup 命令将其推送到后台,而不是将我的程序作为服务运行。
我知道之前已经有人问过类似的问题:将程序作为守护进程运行和使用“&”将其分叉到后台有什么区别?
但我想知道添加 nohup 命令是否会使其像守护进程一样运行。
答案1
运行守护进程和在后台运行程序之间存在差异——事实上,可以在前台运行守护进程。
守护进程模式是软件的一种不同功能,在没有用户交互组件的情况下以无限循环运行。使用 & 并不能保证软件不会继续接受 stdin 上的输入和 stdout 上的输出。通常,守护程序模式具有不同的功能,例如软件默认情况下会在守护程序模式下更彻底地记录 - 在标准模式下,它只是输出到标准输出。 Nohup 会忽略软件的输出,但它仍然不会使软件以守护程序模式运行。最坏的情况是,如果软件需要用户输入,则可能会挂起。