start-stop-daemon - startet und stoppt System-Daemon-Programme
start-stop-daemon [
Option …]
Befehl
start-stop-daemon wird zur Steuerung der Erzeugung und Beendigung von
Prozessen auf Systemebene verwendet. Durch die Verwendung einer der
Abgleich-Optionen kann
start-stop-daemon so konfiguriert werden, dass
er existierende Instanzen von einem laufenden Prozess finden kann.
Hinweis: Falls
--pid oder
--pidfile nicht angegeben ist,
verhält sich
start-stop-daemon ähnlich zu
killall(1).
start-stop-daemon wird die Prozesstabelle nach
Prozessen durchsuchen, die auf den Prozessnamen, die Eltern-PID, UID und/oder
GID (falls angegeben) passen. Jeder passende Prozess wird
--start daran
hindern, den Daemon zu starten. Allen passenden Prozessen wird das TERM-Signal
(oder das mit
--signal oder
--retry angegebene) geschickt, falls
--stop angegeben ist. Für Daemons, die langlebige Kinder haben,
die ein
--stop überleben müssen, müssen Sie eine
PID-Datei angeben.
-
-S, --start [--] Argumente
- Prüft auf Existenz eines angegebenen Prozesses.
Falls ein solcher Prozess existiert, führt start-stop-daemon
nichts aus und beendet sich mit Fehlerstatus 1 (0, falls --oknodo
angegeben wurde). Falls ein solcher Prozess nicht existiert, dann startet
es eine Instanz, entweder unter Verwendung des ausführbaren
Programms, das mittels --exec (oder, falls angegeben, mittels
--startas) spezifiziert wurde. Jedes weitere auf der Befehlszeile
nach -- angegebene Argument wird unverändert an das zu
startende Programm weitergegeben.
-
-K, --stop
- Prüft auf die Existenz eines angegebenen Prozesses.
Falls ein solcher Prozess existiert, dann sendet start-stop-daemon
das durch --signal angegebene Signal und beendet sich mit
Fehlerstatus 0. Falls kein solcher Prozess existiert, dann beendet sich
start-stop-daemon mit Fehlerstatus 1 (0 falls --oknodo
angegeben ist). Falls --retry angegeben wurde, wird
start-stop-daemon überprüfen, ob der/die Prozess(e)
beendet wurden.
-
-T, --status
- Prüft auf die Existenz eines bestimmten Prozesses
und liefert den Exit-Status-Code entsprechend der „LSB Init Script
Actions“ zurück (seit Version 1.16.1).
-
-H, --help
- Gibt eine Meldung zur Verwendung aus und beendet das
Programm.
-
-V, --version
- Zeigt die Programmversion und beendet sich.
-
--pid PID
- Prüft auf einen Prozess mit der angegebenen
PID (seit Version 1.17.6). Die PID muss eine Zahl
größer Null sein.
-
--ppid PPID
- Prüft auf einen Prozess mit der angegebenen
Eltern-PID PPID (seit Version 1.17.7). Die PPID muss eine
Zahl größer Null sein.
-
-p, --pidfile PID-Datei
- Prüft, ob ein Prozess die Datei PID-Datei
angelegt hat.
Hinweis: Wird diese Abgleichoption alleine verwandt, könnte
auf nicht geplante Prozesse eingewirkt werden, falls der alte Prozess
beendet wurde, ohne dass er PID-Datei entfernen konnte.
Warnung: Wird diese Abgleichoption mit einer durch alle Benutzer
schreibbare PID-Datei oder alleine mit einem Daemon, der als nicht
privilegierter Benutzer (d.h. nicht als root) in eine PID-Datei schreibt,
verwandt, dann wird dies mit einem Fehler abgelehnt (seit Version 1.19.3),
da dies ein Sicherheitsrisiko darstellt, da entweder jeder Benutzer
hineinschreiben kann oder, falls der Daemon kompromittiert wird, dem
Inhalt der PID-Datei nicht vertraut werden kann und dann ein
privilegierter Ausführer (wie ein als Root ausgeführtes
Init-Skript) am Ende auf jeden Systemprozess agieren würde. Die
Verwendung von /dev/null ist von diesen Prüfungen
ausgenommen.
-
-x, --exec Programm
- Überprüft auf Prozesse, die Instanzen von
diesem Programm sind. Das Argument Programm sollte ein
absoluter Pfadname sein.
Hinweis: Dies könnte bei interpretierten Skripten nicht wie
geplant funktionieren, da das Programm auf den Interpreter zeigt.
Berücksichtigen Sie, dass dies auch auf Prozesse, die innerhalb
einer Chroot laufen, passen könnte, daher könnten andere
Abgleichrestriktionen benötigt werden.
-
-n, --name Prozessname
- Überprüft auf Prozesse mit dem Namen
Prozessname. Der Prozessname ist normalerweise der Dateiname
des Prozesses, er könnte aber vom Prozess selbst geändert
worden sein.
Hinweis: Auf den meisten Systemen wird diese Information aus dem
„comm“-Namen des Prozesses aus dem Kernel ausgelesen. Dessen
Länge ist typischerweise sehr begrenzt (mehr als 15 Zeichen
anzunehmen ist nicht portabel).
-
-u, --user
Benutzername|uid
- Überprüft auf Prozesse, die dem mit
Benutzername oder uid spezifizierten Benutzer
gehören.
Hinweis: Wird diese Abgleichoption alleine verwandt, wird auf alle
Prozesse, die auf den Benutzer passen, eingewirkt.
-
-g, --group Gruppe|gid
- Wechselt zum Starten des Prozesses zur Gruppe oder
gid.
-
-s, --signal Signal
- Mit --stop wird das an den zu beendenden Prozess zu
sendende Signal spezifiziert (standardmäßig TERM).
-
-R, --retry
Zeitüberschreitung|Plan
- Mit --stop spezifiziert, dass
start-stop-daemon überprüfen soll, ob der Prozess
(die Prozesse) sich beenden. Es überprüft wiederholt, ob
passende Prozesse laufen, bis dies nicht mehr der Fall ist. Falls sich die
Prozesse nicht beenden, werden weitere im „Plan“ angegebene
Aktionen durchgeführt.
Falls Zeitüberschreitung anstelle von Plan spezifiziert
wird, dann wird der Plan
Signal/Zeitüberschreitung
/KILL/Zeitüberschreitung verwendet, wobei
Signal das mit --signal spezifizierte Signal ist.
Plan ist eine Liste von mindestens zwei durch Schrägstriche
(/) getrennten Punkten; jeder Punkt kann aus
-Signalnummer oder [ -]Signalname bestehen,
was bedeutet, dass dieses Signal gesendet werden soll, oder aus
Zeitüberschreitung, was bedeutet, dass so viele Sekunden auf
das Beenden von Prozessen gewartet werden soll, oder aus forever,
was bedeutet, den Rest des Plans falls notwendig für immer zu
wiederholen.
Falls das Ende des Plans erreicht wird und forever nicht spezifiziert
wurde, dann beendet sich der start-stop-daemon mit dem Fehlerstatus
2. Falls ein Plan spezifiziert wurde, dann wird jedes mit --signal
spezifizierte Signal ignoriert.
-
-a, --startas Pfadname
- Mit --start wird der über Pfadname
spezifizierte Prozess gestartet. Falls nicht angegeben, werden
standardmäßig die an --exec übergebenen
Argumente verwendet.
-
-t, --test
- Gibt die Aktionen aus, die erledigt würden und setzt
die entsprechenden Rückgabewerte, führt aber keine Aktionen
durch.
-
-o, --oknodo
- Liefert den Rückgabewert 0 anstatt 1, falls keine
Aktionen ausgeführt wurden (würden).
-
-q, --quiet
- Gibt keine informativen Meldungen aus, zeigt nur
Fehlermeldungen an.
-
-c , --chuid
Benutzername|uid[:Gruppe|gid]
- Wechselt vor dem Start des Prozesses zu diesem
Benutzername/uid. Sie können durch Anhängen von :
auch die Gruppe spezifizieren, in diesem Fall wird die Gruppe oder gid wie
bei dem Befehl chown(1) (Benutzer:Gruppe)
angegeben. Falls ein Benutzer ohne Gruppe angegeben ist, wird die
primäre GID für diesen Benutzer verwandt. Wenn Sie diese
Option verwenden, müssen Sie daran denken, dass die primäre
und zusätzliche Gruppen auch gesetzt werden, selbst wenn die Option
--group nicht angegeben wird. Die Option --group ist nur
für Gruppen, in denen der Benutzer normalerweise kein Mitglied ist
(wie das Hinzufügen von pro-Prozess Gruppenmitgliedschaften
für generische Benutzer wie nobody).
-
-r, --chroot Wurzel
- Wechselt das Verzeichnis vor dem Start des Prozesses zu
Wurzel und ruft chroot auf. Bitte beachten Sie, dass die
PID-Datei auch nach dem Aufruf von chroot geschrieben wird.
-
-d, --chdir Pfad
- Wechselt vor dem Starten des Prozesses zum Verzeichnis
Pfad. Dies wird, falls die -r|--chroot Option gesetzt
ist, nach dem Aufruf von chroot durchgeführt. Falls nicht
angegeben, wird start-stop-daemon vor dem Prozess-Start in das
Wurzelverzeichnis wechseln.
-
-b, --background
- Wird typischerweise für Programme verwandt, die sich
nicht selbständig ablösen. Diese Option zwingt
start-stop-daemon, vor dem Start des Prozesses einen Fork
durchzuführen, und zwingt diesen dann in den Hintergrund.
Warnung: start-stop-daemon kann nicht den Rückgabewert
überprüfen, falls der Prozess aus irgendeinem Grund
nicht startet. Dies ist ein letztes Mittel und ist nur für
Programme gedacht, bei denen das selbstständige Forken keinen Sinn
ergibt oder wo es nicht sinnvoll ist, den Code hierfür
hinzuzufügen.
- --notify-await
- Wartet, dass der Hintergrundprozess eine
Bereitschaftsbenachrichtigung sendet, bevor der Dienst als gestartet
betrachtet wird (seit Version 1.19.3). Dies implementiert Teile des
Bereitschaftsprotokolls von Systemd, wie es in der Handbuchseite
sd_notify(3) festgelegt ist. Die folgenden Variablen werden
unterstützt:
- READY=1
- Das Programm ist bereit, den Dienst zu leisten, daher kann
sicher beendet werden.
-
EXTEND_TIMEOUT_USEC=Anzahl
- Das Programm erbittet die Verlängerung der
Zeitüberschreitung um Anzahl Mikrosekunden. Dies wird die
aktuelle Zeitüberschreitung auf den festgelegten Wert
zurücksetzen.
-
ERRNO=Nummer
- Das Programm beendete sich mit einem Fehler. Macht das
gleiche und gibt die benutzerfreundliche Zeichenkette für den Wert
von errno aus.
-
--notify-timeout
Zeitüberschreitung
- Setzt eine Zeitüberschreitung für die Option
--notify-await (seit Version 1.19.3). Wenn die
Zeitüberschreitung erreicht wird, wird sich
start-stop-daemon mit einem Fehler-Code beenden und es wird auf
keine Bereitschaftsbenachrichtigung gewartet. Die Vorgabe ist 60
Sekunden.
-
-C, --no-close
- Keinen Dateideskriptor schließen, wenn ein Daemon in
den Hintergrund gezwungen wird (seit Version 1.16.5). Dies wird zu
Fehlersuchzwecken angewandt oder um Dateideskriptoren zur Protokollierung
der Prozessausgabe umzuleiten. Nur relevant bei der Verwendung von
--background.
-
-O, --output Pfadname
- Leitet stdout und stderr auf Pfadname
um, wenn der Daemon in den Hintergrund gezwungen wird (seit Version
1.20.6). Nur relevant bei Einsatz von --background.
-
-N, --nicelevel Ganzzahl
- Dies ändert die Priorität des Prozesses,
bevor er gestartet wird.
-
-P, --procsched
Strategie:Priorität
- Dies ändert die Prozesssteuerstrategie
(„process scheduler policy“) und die Priorität des
Prozesses, bevor dieser gestartet wird (seit Version 1.15.0). Die
Priorität kann optional festgelegt werden, indem ein :
gefolgt von einem Wert angegeben wird. Die Standard-
Priorität beträgt 0. Die derzeit unterstützten
Werte für die Strategie lauten other, fifo und
rr.
Diese Option könnte auf einigen Systemen, auf denen
POSIX-Prozessauftragsplanung (Scheduling) nicht unterstützt wird,
nichts durchführen.
-
-I, --iosched
Klasse:Priorität
- Dies ändert die EA-Steuerklasse („IO
scheduler class“) und die Priorität des Prozesses, bevor
dieser gestartet wird (seit Version 1.15.0). Die Priorität kann
optional festgelegt werden, indem ein : gefolgt von einem Wert
angegeben wird. Die Standard- Priorität beträgt 4,
außer Klasse lautet idle, dann beträgt sie
immer 7. Die derzeit unterstützten Werte für die
Klasse lauten idle, best-effort und real-time.
Diese Option könnte auf einigen Systemen, auf denen
Linux-EA-Auftragsplanung (Scheduling) nicht unterstützt wird,
nichts durchführen.
-
-k, --umask Maske
- Dies setzt die umask des Prozesses, bevor er gestartet wird
(seit Version 1.13.22).
-
-m, --make-pidfile
- Wird verwandt, wenn ein Programm gestartet wird, das keine
eigene PID-Datei anlegt. Diese Option sorgt dafür, dass
start-stop-daemon die mit --pidfile referenzierte Datei
anlegt und die PID kurz vor der Ausführung des Prozesses
hineinlegt. Beachten Sie, dass die Datei beim Anhalten des Programms nur
entfernt wird, falls --remove-pidfile verwandt wird.
Hinweis: Diese Funktion könnte in nicht allen Fällen
funktionieren. Insbesondere wenn das auszuführende Programm sich
vom Hauptprozess forkt. Deshalb ist diese Option normalerweise nur in
Kombination mit der Option --background sinnvoll.
- --remove-pidfile
- Wird verwandt, wenn ein Programm gestoppt wird, das seine
PID-Datei nicht entfernt (seit Version 1.17.19). Diese Option führt
dazu, dass start-stop-daemon die durch --pidfile
referenzierte Datei nach der Beendigung des Prozesses entfernt.
-
-v, --verbose
- Gibt ausführliche informative Meldungen aus.
- 0
- Die angeforderte Aktion wurde durchgeführt. Falls
--oknodo angegeben wurde, kann es auch sein, dass nichts
durchgeführt wurde. Das kann passieren, wenn --start
angegeben wurde und der passende Prozess bereits lief oder wenn
--stop angegeben wurde und es keinen passenden Prozess gab.
- 1
- Falls --oknodo nicht angegeben war und nichts
durchgeführt wurde.
- 2
- Falls --stop und --retry angegeben waren,
aber das Ende des Plans erreicht wurde und die Prozesse noch liefen.
- 3
- Jeder andere Fehler.
Bei der Verwendung des Befehls
--status werden die folgenden Statuscodes
zurückgeliefert:
- 0
- Programm läuft.
- 1
- Programm läuft nicht und die PID-Datei
existiert.
- 3
- Programm läuft nicht.
- 4
- Programmstatus kann nicht bestimmt werden.
Den Daemon
food starten, falls noch keiner läuft (ein Prozess mit
Namen food, der als Benutzer food mit PID in food.pid läuft):
start-stop-daemon --start --oknodo --user food --name food \
--pidfile /run/food.pid --startas /usr/sbin/food \
--chuid food -- --daemon
SIGTERM an
food schicken und bis zu fünf Sekunden auf sein
Beenden warten:
start-stop-daemon --stop --oknodo --user food --name food \
--pidfile /run/food.pid --retry 5
Vorführung eines angepassten Plans zum Beenden von
food:
start-stop-daemon --stop --oknodo --user food --name food \
--pidfile /run/food.pid --retry=TERM/30/KILL/5
Die deutsche Übersetzung wurde 2004, 2006-2023 von Helge Kreutzmann
<
[email protected]>, 2007 von Florian Rehnisch <
[email protected]>
und 2008 von Sven Joachim <
[email protected]> angefertigt. Diese
Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public
License Version 2 oder neuer für die Kopierbedingungen. Es gibt KEINE
HAFTUNG.