多くのプログラムは、デーモン モード (通常はデフォルト) で実行するか、 などのフラグを使用して明示的にフォアグラウンドで実行することができます-f
。
このようなプログラムを実行するようにUpstartを設定する場合、次のようにします。
exec foo -f # run in foreground
または
expect fork
exec foo # automatically runs as a daemon
どちらか一方を選択する理由はありますか? すべてをフォアグラウンドで実行し、Upstart にプロセスを処理させる方が簡単なように思えますが、それには欠点がありますか?
答え1
私はフォアグラウンドで実行することを強く好みます。そうすることで、デーモン化プロセスから生じる可能性のあるあらゆる複雑さ (upstart が長時間実行中のデーモン プロセスを見失うなど) を回避できます。唯一の例外は、デーモン化プログラムのごく一部で、これらのプログラムは「フォアグラウンドで実行してください」を「パフォーマンスの低いデバッグ モードで実行してください」と解釈し、1 つのスレッドだけを実行したり、子ワーカーを生成しないなどの愚かなことを行うという不快な習慣を持っています。