start-stop-daemon - start en stopt systeemachtergronddiensten
start-stop-daemon [optie...] commando
start-stop-daemon wordt gebruikt om het creëren en
afsluiten van processen op systeemniveau te regelen. Door een van de
overeenkomstige opties te gebruiken kan start-stop-daemon
geconfigureerd worden om bestaande exemplaren te vinden van actieve
processen.
Opmerking: tenzij --pid of --pidfile opgegeven
werden, gedraagt start-stop-daemon zich gelijk killall(1).
start-stop-daemon zal de procestabel overlopen op zoek naar processen
die overeenkomen met de procesnaam, het moeder-pid, uid en/of gid (als ze
opgegeven werden). Voor elk proces dat een overeenkomst oplevert, zal
verhinderd worden dat --start het proces opstart. Aan alle
overeenkomende processen zal het TERM-signaal (of het signaal dat met
--signal of --retry opgegeven werd) gegeven worden, indien
--stop opgegeven werd. Voor achtergronddiensten met langlevende
dochterprocessen die bij een --stop moeten blijven bestaan, moet u
een pid-bestand opgeven.
- -S, --start
[--] argumenten
- Ga na of het opgegeven proces bestaat. Indien een dergelijk proces
bestaat, doet start-stop-daemon niets en sluit het af met
foutstatus 1 (0 indien --oknodo opgegeven werd). Indien een
dergelijk proces niet bestaat, start het een exemplaar ervan, door het
programma te gebruiken dat ofwel met --exec opgegeven werd, ofwel
met --startas als dat gebruikt werd. Eventuele argumenten die na
-- opgegeven werden aan de commandoregel, worden ongewijzigd
doorgegeven aan het programma dat opgestart wordt.
- -K, --stop
- Gaat na of het opgegeven proces bestaat. Indien een dergelijk proces
bestaat, geeft start-stop-daemon het het signaal dat met
--signal opgegeven werd en sluit dan af met foutstatus 0. Indien
een dergelijk proces niet bestaat, sluit start-stop-daemon af met
foutstatus 1 (0 indien --oknodo opgegeven werd). Indien
--retry opgegeven werd, zal start-stop-daemon controleren of
het/de proces(sen) beëindigd werden.
- -T, --status
- Gaat het bestaan van een opgegeven proces na en geeft een
afsluitstatuscode terug die in overeenstemming is met de LSB-acties voor
initialisatiescripts (LSB Init Script Actions) (sinds versie 1.16.1).
- -H, --help
- Toon informatie over het gebruik en sluit af.
- -V, --version
- Toon de programmaversie en sluit af.
- --pid pid
- Ga na of een proces bestaat met het opgegeven pid (sinds versie
1.17.6). Het pid moet een getal zijn groter dan 0.
- --ppid
moeder-pid
- Ga na of een proces bestaat met het opgegeven moeder-pid moeder-pid
(sinds versie 1.17.7). Het moeder-pid moet een getal zijn groter
dan 0.
- -p, --pidfile
pid-bestand
- Ga na of een proces het bestand pid-bestand aangemaakt heeft.
- Opmerking: deze vergelijkingsoptie alleen gebruiken, kan ertoe leiden dat
geageerd wordt op niet-bedoelde processen in het geval het oude proces
eindigde zonder dat het in staat was het pid-bestand te
verwijderen.
- Waarschuwing: deze vergelijkingsoptie gebruiken met een pid-bestand
dat door iedereen beschreven kan worden, of deze enkel gebruiken met een
achtergronddienst die het pid-bestand wegschrijft als gebruiker zonder
bijzondere rechten, zal met een foutmelding geweigerd worden (sinds versie
1.19.3) omdat het een veiligheidsrisico inhoudt. Dit is omdat elke
gebruiker er naartoe kan schrijven, of omdat de inhoud van het pid-bestand
niet vertrouwd kan worden als de achtergronddienst aangetast raakt, met
als resultaat dat een programmauitvoerder met bijzondere rechten (zoals
een init-script dat als systeembeheerder uitgevoerd wordt) op gelijk welk
systeemproces kan inwerken. Het gebruik van /dev/null is
vrijgesteld van deze controles.
- -x, --exec
programma
- Ga na of er processen bestaan die exemplaren zijn van dit
programma. Het argument programma moet een absolute padnaam
zijn. Opmerking: met geïnterpreteerde scripts kan dit anders dan
bedoeld werken, aangezien de interpreter aangewezen zal worden als het
bedoelde programma. Houd er rekening mee dat ook processen die in een
chroot uitgevoerd worden een overeenkomst zullen opleveren. Het kan dus
nodig zijn om bijkomende vergelijkingsrestricties op te geven.
- -n, --name
procesnaam
- Ga na of er processen bestaan die de naam procesnaam hebben. De
procesnaam is meestal de bestandsnaam van het proces, maar dat kan
door het proces zelf gewijzigd zijn. Opmerking: op de meeste systemen
wordt deze informatie gehaald uit de kernel uit de comm-naam van het
proces. De limiet voor de lengte ervan heeft de tendens relatief klein te
zijn (uitgaan van meer dan 15 tekens is niet-overdraagbaar).
- -u, --user
gebruikersnaam|uid
- Ga na of er processen zijn die eigendom zijn van de gebruiker die met
gebruikersnaam of uid opgegeven werd. Opmerking: enkel deze
vergelijkingsoptie gebruiken zal ertoe leiden dat geageerd wordt op alle
processen die met de gebruiker overeenkomen.
- -g, --group
groep|gid
- Verander naar groep of gid bij het starten van het
proces.
- -s, --signal
signaal
- Samen met --stop gebruikt, geeft het op welk signaal moet gestuurd
worden naar de processen die gestopt worden (standaard is dat TERM).
- -R, --retry
verlooptijd|schema
- Samen met --stop gebruikt, geeft het aan dat
start-stop-daemon moet nagaan of het/de proces(sen) stoppen. Het
zal bij herhaling controleren of er eventueel processen actief zijn die
een overeenkomst opleveren, totdat dit voor geen enkel proces nog het
geval is. Indien de processen niet afsluiten, dan zal het verdere actie
ondernemen, zoals aangegeven door het schema.
Indien verlooptijd opgegeven werd in plaats van
schema, dan wordt het schema
signaal/verlooptijd/KILL/verlooptijd
gebruikt, waarbij signaal het signaal is dat opgegeven werd met
--signal.
schema is een lijst van minstens twee items, van elkaar
gescheiden door slashes (/). Elk item kan
-signaalnummer of [-]signaalnaam zijn,
hetgeen betekent dat dit signaal gegeven moet worden, of
verlooptijd, hetgeen betekent dat dit aantal seconden gewacht
moet worden op het afsluiten van de processen, of forever,
hetgeen betekent dat de rest van het schema zo nodig permanent herhaald
moet worden.
Indien het einde van het schema bereikt wordt en
forever niet opgegeven werd, dan zal start-stop-daemon
afsluiten met de foutstatus 2. Indien een schema opgegeven werd, dan
wordt elk signaal dat met --signal opgegeven werd, genegeerd.
- -a, --startas
padnaam
- Samen met --start gebruikt, start dit het proces dat met
padnaam opgegeven werd. Indien dit niet opgegeven werd, wordt als
standaard het argument gebruikt dat bij --exec opgegeven werd.
- -t, --test
- Toon de acties die ondernomen zouden worden en geef de passende
terugkeerwaarde, maar onderneem geen actie.
- -o, --oknodo
- Geef afsluitstatus 0 terug in plaats van 1 indien er geen acties
ondernomen werden (zouden worden).
- -q, --quiet
- Geef geen informatieve berichten weer. Toon enkel foutmeldingen.
- -c, --chuid
gebruikersnaam|uid[:groep|gid]
- Verander naar deze gebruikersnaam/uid vooraleer het proces te starten. U
kunt ook een groep opgeven door een : toe te voegen en dan de groep
of gid op te geven op dezelfde manier als voor het commando
chown(1) (gebruiker:groep). Indien een
gebruiker opgegeven wordt zonder een groep, dan wordt voor die gebruiker
zijn primaire GID gebruikt. Bij het gebruik van deze optie moet u er zich
van bewust zijn dat ook de primaire en bijkomende groepen ingesteld
worden, ook als de optie --group niet opgegeven werd. De optie
--group dient enkel voor groepen waartoe de gebruiker normaal niet
behoort (zoals het voor een specifiek proces instellen van een
groepslidmaatschap voor algemene gebruikers zoals nobody).
- -r, --chroot
hoofdmap
- Chdir en chroot naar hoofdmap vooraleer het proces te starten. Merk
op dat het pid-bestand ook na het chrooten gemaakt wordt.
- -d, --chdir
pad
- Chdir naar pad vooraleer het proces te starten. Dit gebeurt na het
chrooten als de optie -r|--chroot ingesteld werd. Indien dit
niet opgegeven wordt, dan zal start-stop-daemon een chdir naar de
hoofdmap uitvoeren voor de start van het programma.
- -b,
--background
- Wordt meestal gebruikt bij programma's die zich niet uit zichzelf
afsplitsen. Deze optie zal start-stop-daemon dwingen om een nieuw
proces (fork) te beginnen vooraleer het proces te starten en dat op de
achtergrond te plaatsen. Waarschuwing: start-stop-daemon kan de
afsluitstatus van het proces niet opvolgen mocht de uitvoering ervan om
een of andere reden mislukken. Dit is een laatste toevlucht en is
enkel bedoeld voor programma's waarvoor het ofwel geen zin heeft om uit
zichzelf een nieuw proces (fork) te beginnen, of waarvoor het ondoenbaar
is om code toe te voegen waardoor ze dat uit zichzelf zouden doen.
- --notify-await
- Wachten tot het achtergrondproces een kennisgeving zendt dat het gereed
is, vooraleer de dienst als opgestart beschouwd wordt (sinds versie
1.19.3). Dit past elementen van het 'readiness protocol' van systemd toe,
zoals dit in de man-pagina sd_notify(3) gespecificeerd wordt. De
volgende variabelen worden ondersteund:
- READY=1
- Het programma is gereed om zijn dienstverlening aan te bieden en dus
kunnen we veilig afsluiten.
- EXTEND_TIMEOUT_USEC=aantal
- Het programma vraagt om de wachttijd uit te breiden met aantal
microseconden. Dit stelt de huidige wachttijd opnieuw in op de opgegeven
waarde.
- ERRNO=nummer
- Het programma sluit af met een foutmelding. Hetzelfde doen en van de
errno-waarde de gebruikersvriendelijke tekenreeks tonen.
- --notify-timeoutwachttijd
- Een wachttijd instellen voor de optie --notify-await (sinds versie
1.19.3). Wanneer de wachttijd verlopen is, zal start-stop-daemon
afsluiten met een foutmelding en zal niet gewacht worden op de
kennisgeving van gereedheid. Standaard is dit 60 seconden.
- -C,
--no-close
- Sluit een eventuele bestandsindicator niet bij het naar de achtergrond
dwingen van de achtergronddienst (sinds version 1.16.5). Gebruikt met het
oog op debuggen om de uitvoer van het proces te zien of om
bestandsindicatoren om te leiden om de procesuitvoer te loggen. Enkel
relevant als --background gebruikt wordt.
- -N, --nicelevel
geheel-getal
- Dit wijzigt de prioriteit van het proces voor het gestart wordt.
- -P, --procsched
beleid:prioriteit
- Dit wijzigt het procesplannerbeleid en de procesplannerprioriteit van het
proces voor het gestart wordt (sinds versie 1.15.0). Facultatief kan de
prioriteit opgegeven worden door een :, gevolgd door de waarde, toe
te voegen. De standaardprioriteit is 0. De momenteel ondersteunde
waarden voor beleid zijn other, fifo en rr.
- -I, --iosched
klasse:prioriteit
- Dit wijzigt de IO-plannerklasse en IO-plannerprioriteit van het proces
voor het gestart wordt (sinds versie 1.15.0). Facultatief kan de
prioriteit opgegeven worden door een :, gevolgd door de waarde, toe
te voegen. De standaardprioriteit is 4, tenzij klasse
idle is. In dat geval zal prioriteit steeds 7 zijn. De
momenteel ondersteunde waarden voor klasse zijn idle,
best-effort en real-time.
- -k, --umask
masker
- Dit stelt het umask van het proces in voor het gestart wordt (sinds versie
1.13.22).
- -m,
--make-pidfile
- Wordt gebruikt bij het starten van een programma dat zijn eigen
pid-bestand niet creëert. Deze optie zal start-stop-daemon
het bestand waarnaar met --pidfile verwezen wordt, doen aanmaken en
er het pid in doen plaatsen juist voor het uitvoeren van het proces. Merk
op dat het bestand bij het stoppen van het programma enkel verwijderd zal
worden als --remove-pidfile gebruikt wordt. Opmerking: het
is mogelijk dat deze functionaliteit niet in alle gevallen werkt. Dit is
in het bijzonder zo als het programma dat uitgevoerd wordt, een nieuw
proces (fork) begint vanuit zijn hoofdproces. Daarom is dit gewoonlijk
enkel nuttig in combinatie met de optie --background.
- --remove-pidfile
- Wordt gebruikt bij het stoppen van een programma dat zijn eigen
pid-bestand niet verwijdert (sinds versie 1.17.19). Deze optie zal
start-stop-daemon het bestand waarnaar met --pidfile
verwezen wordt, doen verwijderen na het beëindigen van het
proces.
- -v, --verbose
- Geef uitvoerige informatieve mededelingen weer.
- 0
- De gevraagde actie werd uitgevoerd. Indien --oknodo opgegeven werd,
is het ook mogelijk dat er niets gedaan moest worden. Dit kan het geval
zijn als --start opgegeven werd en er al een overeenkomstig proces
actief was, of als --stop opgegeven werd en er geen overeenkomstige
processen waren.
- 1
- Indien --oknodo niet opgegeven werd en niets gedaan werd.
- 2
- Indien --stop en --retry opgegeven werden, maar het einde
van het schema bereikt werd en de processen nog steeds actief waren.
- 3
- Elke andere fout.
Bij het gebruik van het commando --status, worden de
volgende statuscodes teruggegeven:
- 0
- Het programma is actief.
- 1
- Het programma is niet actief en het pid-bestand bestaat.
- 3
- Het programma is niet actief.
- 4
- Niet in staat om de status van het programma te bepalen.
Start de achtergronddienst food tenzij er al een actief is
(een proces met als naam food, dat actief is als gebruiker food met de pid
in food.pid):
-
start-stop-daemon --start --oknodo --user food --name food \
--pidfile /run/food.pid --startas /usr/sbin/food \
--chuid food -- --daemon
Stuur SIGTERM naar food en wacht tot 5 seconden op
zijn beëindiging:
-
start-stop-daemon --stop --oknodo --user food --name food \
--pidfile /run/food.pid --retry 5
Demonstratie van een aangepast schema om food te
stoppen:
-
start-stop-daemon --stop --oknodo --user food --name food \
--pidfile /run/food.pid --retry=TERM/30/KILL/5