![systemd bleibt hängen, wenn ich einen Dienst starte oder neu starte](https://rvso.com/image/898924/systemd%20bleibt%20h%C3%A4ngen%2C%20wenn%20ich%20einen%20Dienst%20starte%20oder%20neu%20starte.png)
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-c
zurü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
WantedBy
Auß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 ExecStart
nichtGabelwährend der systemd
Dienst für eine sich verzweigende ausführbare Datei konfiguriert war. Dies führte systemctl
zum 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 WantedBy
wird 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, systemd
nach Änderungen an Ihren Servicedateien das Update durchzuführen mit
systemctl daemon-reload