Ich möchte, dass der systemd-Dienst das Forking handhabt (meine Datei handhabt das Forking nicht selbst. Daher verlasse ich mich auf systemd, um das zu handhaben).
Meine .service-Datei:
[Unit]
Description=swamp services management service
After=syslog.target
[Service]
Type=forking
ExecStart=/usr/bin/swamp
[Install]
WantedBy=multi-user.target
Frage
Type=forking
Reicht die Angabe für das, was ich erreichen möchte, aus? Oder ist es ähnlich zu erwarten, dass das Forking beim Upstart tatsächlich den Upstart mitteilt (wenn ich das richtig verstehe, bin ich mir nicht sicher, ob ich Initscripts schreibe), dass mein Dienst das Forking / Daemonizing übernehmen würde.
oneshot
(ein typisches Skript mit kurzer Laufzeit) odersimple
(ein Dienst mit langer Laufzeit, der nicht verzweigt + beendet).&
?Wenn systemd mit dem Gabeln umgehen soll, sollten Sie zB
Type=simple
oder verwendenType=notify
. Dann erledigt systemd das Gabeln für Sie.Wenn Sie die
swamp
ausführbare Datei ändern können ,Type=notify
ist dies die beste Lösung. Die ausführbare Datei sollte dann systemd benachrichtigen, wenn sie erfolgreich initialisiert wurde. Dies bedeutet, dass Siesystemctl start swamp
auf die Initialisierung von swamp warten müssen, wenn Sie über die Befehlszeile aufgerufen werden, und alle Fehlermeldungen drucken, während Sie über die Befehlszeile initialisieren, was normalerweise der Fall ist.Ein Beispiel für eine ausführbare Datei, die für die Verwendung von Type = notify geschrieben wurde, finden Sie im folgenden Shellscript:
quelle