我是否应该明确地在前台运行程序(而不是作为守护进程),或者在配置 upstart 守护进程时“expect fork”?

我是否应该明确地在前台运行程序(而不是作为守护进程),或者在配置 upstart 守护进程时“expect fork”?

许多程序允许以守护进程模式运行(通常是默认模式),或者使用诸如 之类的标志明确在前台运行-f

现在,当配置 upstart 来运行这样的程序时,我可以这样做

exec foo -f # run in foreground

或者

expect fork
exec foo # automatically runs as a daemon

有什么理由选择其中一个吗?感觉在前台运行所有东西并让 upstart 处理进程更容易,但这样做有缺点吗?

答案1

我强烈倾向于在前台运行程序;这样可以避免守护进程可能引起的任何复杂情况(例如,upstart 会丢失对长期运行的守护进程的跟踪)。唯一的例外是少数守护进程,它们有一个令人不快的习惯,即把“请在前台运行”解释为“请在某种性能不佳的调试模式下运行”,并做一些愚蠢的事情,比如只运行一个线程,或者不生成子工作者,或诸如此类。

相关内容