systemd bleibt hängen, wenn ich einen Dienst starte oder neu starte

systemd bleibt hängen, wenn ich einen Dienst starte oder neu starte

Ich bin neu bei systemd, nachdem ich auf 16.04 aktualisiert habe, und habe ein Problem beim Starten und Neustarten von Diensten. Wenn ich (zum Beispiel) ausführe ...

systemctl start djalbat.com

...es scheint zu funktionieren, aber ich bekomme die Eingabeaufforderung nicht zurück, es scheint einfach zu hängen. Wenn ich die Eingabeaufforderung ctrl-czurückbekomme und dann teste, ob der Dienst gestartet wurde, scheint dies der Fall zu sein. Ich frage mich, was in der Konfiguration dies verursachen könnte. Hier ist es:

[Unit]
Description=djalbat.com


[Service]
Type=forking
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log


[Install]
WantedBy=multi-user.target

WantedByAußerdem wäre es nett , wenn jemand auf die Notwendigkeit der letzten Richtlinie hinweisen könnte .

Antwort1

Es stellte sich also heraus, dass der mit der Konfiguration ausgeführte Befehl ExecStartnichtGabelwährend der systemdDienst für eine sich verzweigende ausführbare Datei konfiguriert war. Dies führte systemctlzum Warten auf das Ende der ausführbaren Datei, was zu einer nicht zurückgegebenen Befehlszeile führte.

Die richtige Konfiguration für eine ausführbare Datei, die nichtGabelist zu verwenden Type=simple.

[Unit]
Description=djalbat.com

[Service]
Type=simple
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log

[Install]
WantedBy=multi-user.target

Der WantedBywird benötigt, um diese Einheit mit einem Ziel zu verbinden, so dass diese Einheit oder dieser Dienst automatisch gestartet wird, wenn das entsprechende Ziel erreicht ist und der Dienst so aktiviert ist, dass er automatisch mit startet.

systemctl enable djalbat

Vergessen Sie nicht, systemdnach Änderungen an Ihren Servicedateien das Update durchzuführen mit

systemctl daemon-reload

verwandte Informationen