SYSTEMD-NOTIFY(1) systemd-notify SYSTEMD-NOTIFY(1) BEZEICHNUNG systemd-notify - Den Diensteverwalter uber den Abschluss des Startens und andere Statusanderungen des Daemons benachrichtigen UBERSICHT systemd-notify [OPTIONEN] [VARIABLE=WERT] systemd-notify [--exec] [OPTIONEN] [VARIABLE=WERT] [;] [BEFEHLSZEILE] BESCHREIBUNG systemd-notify kann von Dienste-Skripten zur Benachrichtigung des aufrufenden Diensteverwalters uber Statusanderungen aufgerufen werden. Es kann zum Senden beliebiger Informationen, kodiert in einer umgebungsblockartigen Zeichenkettenliste, verwandt werden. Am wichtigsten ist der Einsatz zur Benachrichtigung uber den Abschluss des Starts. Dies ist hauptsachlich eine Hulle um sd_notify() und stellt diese Funktionalitat Shell-Skripten zur Verfugung. Fur Details siehe sd_notify(3). Dieser Befehl kann eine Liste von Umgebungsvariablen transportieren, die als Teil der Statusaktualisierung gesandt werden sollen. Beachten Sie, dass Systemd den Empfang von Statusaktualisierungen aus diesem Befehl verweigern wird, falls nicht NotifyAccess= geeignet fur die Dienste-Unit, aus der dieser Befehl aufgerufen wird, gesetzt ist. Siehe systemd.service(5) fur Details. Beachten Sie, dass sd_notify()-Benachrichtigungen nur Units korrekt zugeordnet werden konnen, falls entweder der sendende Prozess noch zu dem Zeitpunkt vorhanden ist, zu dem der Diensteverwalter die Nachricht verarbeitet oder falls der sendende Prozess explizit vom Diensteverwalter laufzeitverfolgt ist. Letzteres ist der Fall, falls der Diensteverwalter den Prozess ursprunglich mit >>fork<< erzeugte, d.h. bei allen Prozessen, die auf NotifyAccess=main oder NotifyAccess=exec passen. Umgekehrt, falls ein Hilfsprozess einer Unit eine sd_notify()-Nachricht sendet und sich sofort beendet, konnte der Diensteverwalter nicht in der Lage sein, die Nachricht korrekt der Unit zuzuordnen und wird sie daher ignorieren, selbst falls NotifyAccess=all fur sie gesetzt ist. Um dieses zu beheben, wird systemd-notify warten, bis alle Benachrichtigungsmeldungen durch den Diensteverwalter verarbeitet wurden. Wenn --no-block verwandt wird, wird diese Synchronisationen zum Empfang von Benachrichtigungen deaktiviert und daher kann der weiter oben erwahnte Ressourcenwettlauf stattfinden, falls der aufrufende Prozess nicht der Diensteverwalter ist oder von diesem erzeugt wurde. systemd-notify wird zuerst versuchen, sd_notify() aufzurufen und dabei vorzugeben, die PID des ubergeordneten Prozesses von systemd-notify (d.h. des aufrufenden Prozesses) zu besitzen. Dies gelingt nur, wenn der Aufruf mit ausreichenden Privilegien erfolgt. Beim Fehlschlag wird er dann auf den Aufruf unter seiner eigenen PID zuruckfallen. Dieses Verhalten ist nutzlich, damit der Shell-Prozess -- und nicht der systemd-notify-Prozess -- im Falle des Aufrufs des Werkzeugs aus einem Shell-Skript als Sender der Nachricht erscheint, was wiederum hilfreich ist, falls der Shell-Prozess aufgrund der Einschrankungen von NotifyAccess=all im Hauptprozess eines Dienstes erscheint. Verwenden Sie den Schalter --pid=, um dieses Verhalten anzupassen. OPTIONEN Die folgenden Optionen werden verstanden: --ready Informiert den aufrufenden Diensteverwalter uber den Abschluss des Dienstestarts oder des Neuladens der Konfiguration. Dies ist zu systemd-notify READY=1 aquivalent. Fur Details uber die Semantik dieser Option siehe sd_notify(3). --reloading Informiert den aufrufenden Diensteverwalter uber den Anfang eines Konfigurationsneuladezyklus. Die ist zu systemd-notify RELOADING=1 aquivalent (setzt aber implizit auch das fur den Dienst Type=notify-reload benotigte Feld MONOTONIC_USEC=, siehe systemd.service(5) fur Details). Fur Details zur Semantik dieser Option siehe sd_notify(3). Hinzugefugt in Version 253. --stopping Informiert den aufrufenden Diensteverwalter uber den Anfang der Herunterfahrphase des Dienstes. Dies ist zu systemd-notify STOPPING=1 aquivalent. Fur Details uber die Semantik dieser Option siehe sd_notify(3). Hinzugefugt in Version 253. --pid= Informiert den Diensteverwalter uber die Haupt-PID des Dienstes. Akzeptiert eine PID als Argument. Falls das Argument als >>auto<< angegeben ist oder fehlt, wird die PID des systemd-notify aufrufenden Prozesses verwandt, ausser falls dies der Diensteverwalter ist. Falls das Argument als >>self<< angegeben ist, wird die PID des Befehls systemd-notify selbst verwandt, und falls >>parent<< angegeben ist, wird die PID des aufrufenden Prozesses verwandt -- selbst falls dies der Diensteverwalter selbst ist. --pid=auto ist zu systemd-notify MAINPID=$PID aquivalent. Fur Details uber die Semantik dieser Option siehe sd_notify(3). Falls dieser Schalter im Aufruf von systemd-notify aus einem Prozess, der der neue Hauptprozess des Dienstes werden soll - und der nicht der vom Diensteverwalter mit Fork erzeugte Prozess ist (oder der aktuelle Hauptprozess) - verwandt wird, dann ist es wesentlich, NotifyAccess=all in der Dienste-Unit-Datei zu setzen oder andernfalls wird die Benachrichtigung aus Sicherheitsgrunden ignoriert. Siehe systemd.service(5) fur Details. --uid=BENUTZER Setzt die Benutzerkennung von der die Benachrichtigung gesendet werden soll. Akzeptiert einen UNIX-Benutzernamen oder eine numerische UID. Wenn angegeben, wird die Benachrichtigungsmeldung mit der angegebenen UID als Absender gesandt, anstelle die des Benutzers, unter der es aufgerufen wurde. Diese Option benotigt ausreichende Privilegien, um in der Lage zu sein, die Benutzerkennung des Prozesses zu verandern. Hinzugefugt in Version 237. --status= Sendet eine formlose, menschenlesbare Statuszeichenkette fur den Daemon an den Dienste-Verwalter. Diese Option akzeptiert die Statuszeichenkette als Argument. Dies ist zu systemd-notify STATUS= aquivalent. Fur Details uber die Semantik dieser Option siehe sd_notify(3). Diese Information wird unter anderem in der Ausgabe von systemctl(1) status angezeigt. --booted Liefert 0 zuruck, falls das System mit Systemd gestartet wurde, einen anderen Wert andernfalls. Falls diese Option ubergeben wurde, wird keine Nachricht gesandt. Diese Option hat daher keinen Bezug zu den anderen Optionen. Fur Details uber die Semantik dieser Option, siehe sd_booted(3). Eine alternative Art, auf diesen Zustand zu prufen, ist der Aufruf systemctl(1) mit dem Befehl is-system-running. Er wird >>offline<< zuruckliefern, falls das System nicht mit Systemd gestartet wurde. --no-block Wartet nicht synchron auf den Abschluss der angefragten Option. Der Einsatz dieser Option wird nur empfohlen, wenn systemd-notify vom Diensteverwalter erzeugt wurde oder wenn der aufrufende Prozess direkt durch den Diensteverwalter erzeugt wurde und uber genug Privilegien verfugt, um systemd-notify zu erlauben, die Benachrichtigungen an seiner Stelle zu senden. Das Senden von Benachrichtigungen mit dieser Option ist in allen anderen Fallen anfallig fur Ressourcenwettlaufe. Hinzugefugt in Version 246. --exec Falls angegeben wird systemd-notify eine andere Befehlszeile ausfuhren, nachdem es seine Aktion abgeschlossen hat, und seinen eigenen Prozess ersetzen. Falls verwandt, muss die Liste der Zuweisungen, die in der versandten Meldung aufgenommen werden soll, von einem Zeichen >>;<< gefolgt werden (als getrenntes Argument), gefolgt von der auszufuhrenden Befehlszeile. Dies erlaubt das >>Verketten<< von Befehlen, d.h. dem Ausgeben einer Aktionen mit sofort folgender zweiten, ohne die PID zu verandern. Beachten Sie, dass viele Shells >>;<< als ihr eigenes Trennzeichen fur Befehlszeilen interpretieren, daher muss das Semikolon normalerweise als >>\;<< maskiert werden, wenn systemd-notify von der Shell aufgerufen wird. Hinzugefugt in Version 254. --fd= Sendet zusammen mit der Benachrichtigungsmeldung einen Dateideskriptor. Dies ist in Diensten nutzlich, bei denen die Einstellung FileDescriptorStoreMax= aktiviert ist; siehe systemd.service(5) zu Details. Der angegebene Dateideskriptor muss beim Aufruf an systemd-notify ubergeben werden. Diese Option kann mehrfach verwandt werden, um mehrere Dateideskriptoren in einer einzelnen Benachrichtigungsmeldung zu ubergeben. Um diese Funktionalitat von einer bash(1)-Shell zu verwenden, nutzen Sie einen Ausdruck der folgenden Art: systemd-notify --fd=4 --fd=5 4>FDNAME<<. Diese Einstellung darf nur einmal angegeben werden und gilt fur alle ubergebenen Dateideskriptoren. Rufen Sie dieses Werkzeug mehrfach auf, falls mehrere Dateideskriptoren mit verschiedenen Dateideskriptorennamen eingereicht werden sollen. Hinzugefugt in Version 254. -h, --help Zeigt einen kurzen Hilfetext an und beendet das Programm. --version Zeigt eine kurze Versionszeichenkette an und beendet das Programm. EXIT-STATUS Bei Erfolg wird 0 zuruckgegeben, anderenfalls ein Fehlercode ungleich Null. BEISPIEL Example 1. Startbenachrichtigungen und Statusaktualisierungen Ein einfacher Shell-Daemon, der Startbenachrichtigungen versendet, nachdem er einen Kommunikationskanal eingerichtet hat. Wahrend der Laufzeit sendet er weitere Statusaktualisierungen an das Init-System: #!/bin/sh mkfifo /tmp/waldo systemd-notify --ready --status="Warte auf Daten" while : ; do read -r a < /tmp/waldo systemd-notify --status="Verarbeite $a" # Mache etwas mit $a systemd-notify --status="Warten auf Daten" done SIEHE AUCH systemd(1), systemctl(1), systemd.unit(5), systemd.service(5), sd_notify(3), sd_booted(3) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . systemd 256.5 SYSTEMD-NOTIFY(1)