Kann ich systemd den Dienststatus anzeigen lassen, nachdem ein Dienst gestartet oder gestoppt wurde?


8

Ich versuche, systemd dazu zu bringen, das zu tun, was init.d-Skripte tun würden, und den Status eines Dienstes automatisch anzuzeigen, nachdem manuell ein Befehl zum Starten oder Stoppen erteilt wurde. Ist das irgendwie möglich?

systemd erscheint leider sofort wieder, da es im Hintergrund ausgeführt wird und Sie dann einen zweiten Befehl ausführen müssen, um den Status anzuzeigen. Der Start oder Stopp hat möglicherweise funktioniert oder nicht. systemd wird es Ihnen nicht sagen, es sei denn, Sie fragen und lassen Sie selig ignorant.

dh. Ich versuche zu bekommen

service nginx status

automatisch laufen, nachdem ich a

service nginx start

oder

service nginx restart

(oder in gehirngeschädigten Systemen systemctl start nginx.service)


1
Ich benutze die Befehle "Gehirn beschädigt" (ich mag sie!). Sie sagen eigentlich nichts, wenn alles in Ordnung ist, lassen Sie aber wissen, wenn etwas fehlschlägt. Zumindest ist das bei openSUSE 13.1 so. Sind Sie sicher, dass sie "still" sind, wenn sie versagen? Hast du es versucht systemctl start nginx.service && echo SUCCESS || echo failure?
Huygens

2
@Huygens rechnen nicht damit, dass systemd alle Fehler erkennen kann, es kann definitiv stille Fehler oder Warnungen geben. Prozesse werden im Hintergrund gestartet und systemd verlässt die Steuerung. Es ist überhaupt nicht wie init.d. Ich kann sehen, dass dies konsistent passiert, wenn die Erstellung der PID-Datei fehlschlägt. Mit systemd (und dem Punkt meiner Frage) ist es ein absolutes Muss, nach einem manuellen Start oder Neustart einen Status zu erhalten.
ck_

danke für die klarstellung, ich habe hier etwas gelernt! Ich freue mich dann auf eine Antwort auf diese Frage!
Huygens

Die Braindead-Syntax ist Service 1, da Sie im Gegensatz zu einer viel besseren Systemd-Syntax nicht mehrere Dienste gleichzeitig bearbeiten können: systemctl stop service1 service2 service3
god

1
Wenn Sie beim Überprüfen des Exit-Status von systemctl@Huygens immer noch die gleiche Inkonsistenz feststellen, die möglicherweise von @Huygens vorgeschlagen wurde, liegt das Problem möglicherweise darin, dass der nginx.serviceStart erfolgreich ist, danach jedoch abstürzt. Versuchen Sie, das Journal oder die Nginx-Protokolle zu überprüfen.
Amir

Antworten:


1

Es gibt keinen integrierten Befehl für Ihren Anwendungsfall, daher müssen Sie einen Alias ​​für Ihre Lieblings-Shell oder einen einfachen Skript-Wrapper erstellen.


0

Um systemd "ausführlicher" zu machen, fügen Sie die folgenden Zeilen in Ihrem hinzu / kommentieren Sie sie aus /etc/systemd/journald.confund starten Sie sie neu:

ForwardToConsole=yes
MaxLevelConsole=debug
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.