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.