Soll ich Programme lieber explizit im Vordergrund ausführen (statt als Daemon) oder beim Konfigurieren von Upstart-Daemons „Fork erwarten“?

Soll ich Programme lieber explizit im Vordergrund ausführen (statt als Daemon) oder beim Konfigurieren von Upstart-Daemons „Fork erwarten“?

Viele Programme können entweder im Daemon-Modus (normalerweise die Standardeinstellung) oder mit einem Flag wie explizit im Vordergrund ausgeführt werden -f.

Wenn ich Upstart nun so konfiguriere, dass es Programme wie dieses ausführt, kann ich entweder

exec foo -f # run in foreground

oder

expect fork
exec foo # automatically runs as a daemon

Gibt es einen Grund, das eine dem anderen vorzuziehen? Es scheint einfacher zu sein, alles im Vordergrund laufen zu lassen und Upstart die Prozesse handhaben zu lassen, aber hat das auch Nachteile?

Antwort1

Ich ziehe es stark vor, Dinge im Vordergrund laufen zu lassen; das vermeidet Komplikationen, die durch den Daemonisierungsprozess entstehen können (wie etwa, dass Upstart den Überblick über den lang laufenden Daemonprozess verliert). Die einzige Ausnahme hiervon ist eine kleine Minderheit von Daemonisierungsprogrammen, die die unangenehme Angewohnheit haben, „bitte im Vordergrund laufen“ als „bitte in einer Art Debugmodus mit schlechter Leistung laufen“ zu interpretieren und etwas Dummes zu tun, wie etwa nur einen Thread laufen zu lassen, keine untergeordneten Worker zu erzeugen oder ähnliches.

verwandte Informationen