Devo executar programas explicitamente em primeiro plano (em vez de como um daemon) ou `esperar fork` ao configurar daemons iniciantes?

Devo executar programas explicitamente em primeiro plano (em vez de como um daemon) ou `esperar fork` ao configurar daemons iniciantes?

Muitos programas permitem ser executados no modo daemon (que geralmente é o padrão) ou explicitamente executados em primeiro plano com um sinalizador como -f.

Agora, ao configurar o upstart para executar programas como este, posso fazer

exec foo -f # run in foreground

ou

expect fork
exec foo # automatically runs as a daemon

Existe uma razão para escolher um em vez do outro? Parece que é mais fácil executar tudo em primeiro plano e deixar o iniciante cuidar dos processos, mas há uma desvantagem nisso?

Responder1

Prefiro fortemente fazer as coisas em primeiro plano; evita quaisquer complicações que possam surgir do processo de daemonização (como o iniciante perder o controle do processo daemon de longa execução). A única exceção a isso é uma pequena minoria de programas de daemonização que têm o desagradável hábito de interpretar "por favor, execute em primeiro plano" como "por favor, execute em algum tipo de modo de depuração de baixo desempenho" e fazem algo bobo como executar apenas um thread , ou não gerar crianças trabalhadoras, ou algo assim.

informação relacionada