start-stop-daemon - startet und stoppt System-Daemon-Programme
ÜBERSICHT
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
ÜBERSETZUNG
Die deutsche Übersetzung wurde 2004, 2006-2023 von Helge
Kreutzmann <debian@helgefjell.de>, 2007 von Florian Rehnisch
<eixman@gmx.de> und 2008 von Sven Joachim <svenjoac@gmx.de>
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.