BEZEICHNUNG
systemd-notify - Den Diensteverwalter über den Abschluss des Startens und andere Statusänderungen des Daemons benachrichtigenÜBERSICHT
systemd-notify
[OPTIONEN…] [VARIABLE=WERT…]
BESCHREIBUNG
systemd-notify kann von Daemon-Skripten zur Benachrichtigung des Init-Systems über Statusänderungen aufgerufen werden. Es kann zum Senden beliebiger Informationen, kodiert in einer umgebungsblockartigen Zeichenkettenliste, verwandt werden. Am wichtigsten ist der Einsatz zur Benachrichtigung über den Abschluss des Starts. Dies ist hauptsächlich eine Hülle um sd_notify() und stellt diese Funktionalität Shell-Skripten zur Verfügung. Für 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= für die Dienste-Unit, aus der dieser Befehl aufgerufen wird, gesetzt ist. Beachten Sie, dass sd_notify()-Benachrichtigungen nur Units korrekt zugeordnet werden können, falls entweder der sendende Prozess noch zu dem Zeitpunkt vorhanden ist, zu dem PID 1 die Nachricht verarbeitet oder falls der sendende Prozess explizit vom Diensteverwalter laufzeitverfolgt ist. Letzteres ist der Fall, falls der Diensteverwalter den Prozess ursprünglich 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, könnte der Diensteverwalter nicht in der Lage sein, die Nachricht korrekt der Unit zuzuordnen und wird sie daher ignorieren, selbst falls NotifyAccess= all für sie gesetzt ist. Wenn --no-block verwandt wird, werden alle Synchronisationen zum Empfang von Benachrichtigungen deaktiviert und daher kann der weiter oben erwähnte Ressourcenwettlauf stattfinden, falls der aufrufende Prozess nicht der Diensteverwalter ist oder von diesem erzeugt wurde. Daher wird systemd-notify erst versuchen, sd_notify() aufzurufen und dabei vorzugeben, die PID 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 zurückfallen. Dieses Verhalten ist nützlich, 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 Einschränkungen von NotifyAccess=all im Hauptprozess eines Dienstes erscheint. Verwenden Sie den Schalter --pid=, um dieses Verhalten anzupassen.OPTIONEN
Die folgenden Optionen werden verstanden: --readyInformiert das Init-System über den
Abschluss des Startens von Diensten. Dies ist zu systemd-notify READY=1
äquivalent. Für Details über die Semantik dieser Option
siehe sd_notify(3).
--pid=
Informiert den Diensteverwalter über
die Haupt-PID des Daemons. Akzeptiert eine PID als Argument. Falls das
Argument als »auto« angegeben ist oder fehlt, wird die PID des
systemd-notify aufrufenden Prozesses verwandt, außer 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.
Dies ist zu systemd-notify MAINPID=$PID äquivalent. Für
Details über die Semantik dieser Option siehe
sd_notify(3).
--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 benötigt ausreichende
Privilegien, um in der Lage zu sein, die Benutzerkennung des Prozesses zu
verändern.
--status=
Sendet eine formlose Statuszeichenkette
für den Daemon an das Init-System. Diese Option akzeptiert die
Statuszeichenkette als Argument. Dies ist zu systemd-notify
STATUS=… äquivalent. Für Details über die
Semantik dieser Option siehe sd_notify(3).
--booted
Liefert 0 zurück, falls das System mit
Systemd gestartet wurde, einen anderen Wert andernfalls. Falls diese Option
übergeben wurde, wird keine Nachricht gesandt. Diese Option hat daher
keinen Bezug zu den anderen Optionen. Für Details über die
Semantik dieser Option, siehe sd_booted(3). Eine alternative Art, auf
diesen Zustand zu prüfen, ist der Aufruf systemctl(1) mit dem
Befehl is-system-running. Er wird »offline«
zurückliefern, 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
über genug Privilegien verfügt, um systemd-notify zu
erlauben, die Benachrichtigungen an seiner Stelle zu senden. Das Senden von
Benachrichtigungen mit dieser Option ist in allen anderen Fällen
anfällig für Ressourcenwettläufe.
-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 zurückgegeben, anderenfalls ein Fehlercode ungleich Null.BEISPIEL
Example 1. Startbenachrichtigungen und Statusaktualisierungen Ein einfacher Shell-Daemon, der Startbenachrichtigungen versendet, nachdem er einen Kommunikationskanal eingerichtet hat. Während 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), sd_notify(3), sd_booted(3)ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <[email protected]> erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzersystemd 252 |