许多程序允许以守护进程模式(通常是
默认模式)运行,或者使用诸如-f之类的标志在
前台显式运行它.
现在,当配置upstart运行这样的程序时,我可以做到
exec foo -f # run in foreground
要么
expect fork
exec foo # automatically runs as a daemon
是否有理由选择其中一个?感觉在前台运行所有内容并让upstart处理流程变得更容易,但这有什么缺点吗?
我更喜欢在
前台运行东西;它避免了守护程序过程中可能出现的任何复杂情况(例如新手正在失去对长期运行的守护进程的跟踪).唯一的例外是一小部分守护程序,它们有令人不愉快的习惯,即“请在
前台运行”,因为“请运行某种
性能不佳的调试模式”,并做一些愚蠢的事情,比如只运行
一个线程,或不产生童工,或一些这样的.