start-stop-daemon - startar och stoppar bakgrundsprocesser
start-stop-daemon [
flagga...]
åtgärd
start-stop-daemon används för att styra hur processer
på systemnivå skapas och avslutas. Med hjälp av en av
sökflaggorna kan
start-stop-daemon ställas in att hitta
befintliga instanser av en körande process.
Observera: Om inte
--pid eller
--pidfile anges kommer
start-stop-daemon att jobba på ett sätt som liknar
killall(1). start-stop-daemon kommer att
söka i processtabellen efter processer med motsvarande namn på
processen, användar-id och/eller grupp-id (om sådant anges).
Alla processer som stämmer överens kommer tillsändas
signalen TERM (eller den som anges med
--signal eller
--retry)
om
--stop anges. För processer som har långlivade barn
som måste överleva en
--stop, måste du ange en
pidfil.
-
-S, --start [--] argument
- Se om en angiven process existerar, och om så
är fallet gör start-stop-daemon ingenting och
avslutar med status 1 (0 om --oknodo anges). Om en sådan
process inte existerar startas en instans, antingen med programfilen som
anges med --exec eller, om den anges, med --startas.
Eventuella argument som ges efter -- på kommandoraden
skickas utan ändring till programmet som startas.
-
-K, --stop
- Testa om den angivna processen existerar. Om så
är fallet sänder start-stop-daemon den signal som
anges av --signal till processen, och avslutar med status 0. Om
processen inte finns avslutar start-stop-daemon med status 1 (0 om
--oknodo anges). Om --retry anges kommer
start-stop-daemon kontrollera att processen har avslutats.
-
-T, --status
- Se om den angivna processen existerar, och returnerar en
statuskod i enlighet med LBS Init Script Actions (sedan version
1.16.1).
-
-H, --help
- Visa hjälpskärm och avsluta.
-
-V, --version
- Visa programversion och avsluta.
-
--pid pid
- Se efter en process med angiven pid (sedan version
1.17.6). pid måste vara ett tal större än
0.
-
--ppid ppid
- Se efter en process med angiven föräldra-pid
ppid (sedan version 1.17.7). ppid måste vara ett tal
större än 0.
-
-p, --pidfile pidfil
- Kontrollera om en process har skapat filen pidfil.
Observera: Om flaggan används på egen hand kan den
orsaka att oönskade processer berörs, om den gamla processen
avslutats utan att kunna ta bort pidfil.
Varning: Om flaggan används med en pidfil som kan skrivas av
alla eller om den används ensam tillsammans med en serverprocess
som skriver pidfilen som en icke-privilegierad användare
(icke-root) kommer det att avvisas med ett felmeddelande (sedan version
1.19.3) eftersom det är en säkerhetsrisk, då antingen
alla användare kan skriva filen, eller om serverprocessen
komprometteras och inte innehållet i pidfilen inte är
betrott, så kan en privilegiserad körprocess (till exempel
ett init-skript som körs som root) kunna arbeta mot vilken som
helst systemprocess. /dev/null är undantaget från
dessa kontroller.
-
-x, --exec programfil
- Se efter processer som är instanser av
programfil. Flaggan programfil bör vara en absolut
sökväg.
Observera: Detta fungerar kanske inte som det ska för tolkade
skript eftersom programfilen kommer peka på tolken. Notera att
processer som körs inuti en chroot också kommer att
träffas, så andra begränsningar kan
behövas.
-
-n, --name processnamn
- Se efter processer med namnet processnamn.
Processnamn är vanligtvis processens filnamn, men kan ha
ändrats av processen själv.
Observera: På de flesta system hämtas informationen
från processens comm-namn från kärnan, vilket ofta
har en relativt kort längdbegränsning (det är inte
portablet att anta fler än 15 tecken).
-
-u, --user
användarnamn|användar-id
- Sök efter processer som ägs av den
användare som anges med användarnamn eller
användar-id.
Observera: Om den här flaggan används på egen
hand träffas alla processer som motsvarar användaren.
-
-g, --group grupp|grupp-id
- Byt till grupp eller grupp-id när
processen startas.
-
-s, --signal signal
- Tillsammans med --stop anger detta den signal som
ska sändas till processen som stoppas (förval är
TERM).
-
-R, --retry
tidsgräns|schema
- Tillsammans med --stop anger detta att
start-stop-daemon ska kontrollera att processen avslutas. Den
testar flera gånger efter matchande processer som körs,
tills ingen längre finns kvar. Om processerna inte avslutar kommer
programmet utföra ytterligare kommandon enligt schemat.
Om tidsgräns anges istället för schema
kommer schemat
signal/timeout/KILL/timeout att
användas, där signal är den signal som anges
med --signal.
schema är den lista med åtminstone två poster
avdelade med snedstreck ( /); varje post är antingen
- signalnummer eller [-]signalnamn, vilket
betyder att signalen ska sändas, eller timeout, vilket anger
det antal sekunder programmet ska vänta på att processen
avslutar, eller forever, vilket betyder att resten av schemat ska
repetera för evigt om så behövs.
Om slutet på schemat nås och forever inte anges kommer
start-stop-daemon avslutas med felkod 2. Om ett schema anges kommer
eventuell signal angiven med --signal att ignoreras.
-
-a, --startas
sökväg
- Tillsammans med --start anger detta att processen
som anges med sökväg ska startas. Om den inte anges
används argumentet som gavs till --exec.
-
-t, --test
- Skriver ut vad som skulle ha utförts och
sätter returvärdet, men utför ingenting.
-
-o, --oknodo
- Returnerar felstatus 0 i stället för 1 om
ingen åtgärd utförs/skulle utförts.
-
-q, --quiet
- Skriv inte informationsmeddelanden; visa endast
felmeddelanden.
-
-c, --chuid
användarnamn|användar-id[
:grupp|grupp-id]
- Byt till användarnamnet/användar-id:t innan
processen startas. Du kan även ange en grupp genom att lägga
till ett kolontecken, :, följt av gruppnamnet eller grupp-id
på samma sätt som du skull gjort till kommandot
chown(1) ( användare:grupp). Om du
anger en användare utan att ange en grupp kommer användarens
primära grupp-id att användas. När du använder
alternativet måste du ha i åtanke att även
både primär- och tilläggsgrupp sätts,
även om --group-flaggan inte anges. --group-flaggan
är bara till för grupper som användaren normalt inte
är en medlem i (t.ex för att lägga till
gruppmedlemskap för enskilda processer för
standardanvändare såsom nobody).
-
-r, --chroot rot
- Byt katalog och rot till rot innan processen
startas. Observera att även pidfilen skrivs efter chroot har
utförts.
-
-d, --chdir sökväg
- Byt katalog till sökväg innan
processen startas. Detta görs efter byte av rot om
-r|--chroot-flaggan anges. Om flaggan inte anges kommer
start-stop-daemon byta till rotkatalogen innan processen
startas.
-
-b, --background
- Används typiskt med program som inte kopplar loss
sig av sig själva. Flaggan tvingar start-stop-daemon att
förgrena sig (fork) innan processen startar, och tvinga den grenen
att köra i bakgrunden.
Varning: start-stop-daemon kan inte kontrollera felstatus för
processer som av någon som helst anledning misslyckas med
att exekvera. Detta är en sista utväg, och är endast
avsett för program som det antingen inte är någon
mening att förgrena på egen hand, eller där det inte
är möjligt att lägga till kod för det
på egen hand.
- --notify-await
- Vänta på att bakgrundsprocessen sänder
en bekräftelse på att den är redo innan
tjänsten anses vara startad (sedan version 1.19.3). Detta
implementar delar av systemd:s beredskapsprotokoll, så som det
anges i manualsidan sd_notify(3). Följande variabler
stöds:
- READY=1
- Programmet är redo att tillhandahålla sin
tjänst, så vi kan avsluta på ett säkert
sätt.
-
EXTEND_TIMEOUT_USEC=antal
- Programmet ber om att utöka tidsgränsen med
antal mikrosekunder. Detta kommer återställa den
aktuella tidsgränsen till det angivna värdet.
-
ERRNO=värde
- Programmet avslutar med en felkod. Gör detsamma och
skriv ut den användarvänliga strängen för
errno-värdet.
-
--notify-timeout tidsgräns
- Sätt en tidsgräns för flaggan
--notify-await (sedan version 1.19.3). När
tidsgränsen nås kommer start-stop-daemon avslutas med
en felkod, och ingen beredskapsinformation kommer väntas på.
Förvalet är 60 sekunder.
-
-C, --no-close
- Stäng inte filbeskrivare när serverprocessen
tvingas till bakgrunden (sedan version 1.16.5). Använd för
felsöknignssyften för att se processutdata, eller för
att omdirigera filbeskrivare för att logga processutdata. Endast
relevant när --background används.
-
-O, --output sökväg
- Omdirigera standard ut och standard fel till
sökväg när serverprocessen tvingas till
bakgrunden (sedan version 1.20.6). Endast relevant när
--background används.
-
-N, --nicelevel heltal
- Ändrar prioriteten på processen innan den
startas.
-
-P, --procsched
policy:prioritet
- Ändrar processschemaläggarens policy och
prioritet för processen innan den startas (sedan version 1.15.0).
Prioriteten är valfri och anges genom att lägga till ett
: följt av värdet. Standardvärdet för
prioritet är 0. För närvarande stöds
värdena other, fifo och rr för
policy.
Det är möjligt att flaggan inte gör något
på system där POSIX-processschemaläggning inte
stöds.
-
-I, --iosched
klass:prioritet
- Ändrar I/O-schemaläggarens klass och
-prioritet för processen innan den startas (sedan version 1.15.0).
Prioriteten är valfri och anges genom att lägga till ett
: följt av värdet. Standardvärdet för
prioritet är 4, såvida inte klass är
idle, då är prioritet alltid 7. För
närvarande stöds värdena idle,
best-effort och real-time för klass.
Det är möjligt att flaggan inte gör något
på system där Linux-I/O-schemaläggning inte
stöds.
-
-k, --umask maskvärde
- Ställer in umaskvärdet på processen
innan den startas (sedan version 1.13.22).
-
-m, --make-pidfile
- Används när ett program som inte skapar sin
egen pidfil startas. Flaggan kommer att få start-stop-daemon
att skapa filen som anges med --pidfile och lägga process-id
i den precis innan processen startas. Observera att den endast kommer att
tas bort när programmet stoppas om --remove-pidfile
används.
Observera: Funktionen kanske inte alltid fungerar.
Framförallt inte när programmet som startas förgrenar
sig (fork) från sin huvudprocess. Därför är
flaggan oftast bara användbar i samband med flaggan
--background.
- --remove-pidfile
- Används när ett program som inte tar bort sin
egen pid-fil stoppas (sedan version 1.17.19). Flaggan gör att
start-stop-daemon tar bort filen som anges med --pidfile
efter att processen stoppats.
-
-v, --verbose
- Skriv ut pratsamma informationsmeddelanden.
- 0
- Efterfrågad åtgärd utfördes. Om
--oknodo angavs är det även möjligt att
ingenting behövde utföras. Det kan hända när
--start angavs och en motsvarande process redan körde, eller
när --stop angavs och det inte fanns någon
motsvarande process.
- 1
- Om --oknodo inte angavs och ingenting gjordes.
- 2
- Om --stop och --retry angavs, men slutet
på tidtabellen nåddes och processen fortfarande
kördes.
- 3
- Alla andra fel.
Med
--status-åtgärden returneras följande
statuskoder:
- 0
- Programmet kör.
- 1
- Programmet kör inte och pid-filen finns.
- 3
- Programmet kör inte.
- 4
- Kan inte ta reda på programmets status.
Starta serverprocessen
food, såvida inte en redan kör (en
process med namnet food, som körs som användaren food, med
process-id i food.pid):
start-stop-daemon --start --oknodo --user food --name food \
--pidfile /run/food.pid --startas /usr/sbin/food \
--chuid food -- --daemon
Sänd
SIGTERM till
food och vänta upp till fem
sekunder på att den ska avslutas:
start-stop-daemon --stop --oknodo --user food --name food \
--pidfile /run/food.pid --retry 5
Demonstration av ett skräddarsytt schema för att avsluta
food:
start-stop-daemon --stop --oknodo --user food --name food \
--pidfile /run/food.pid --retry=TERM/30/KILL/5
Peter Krefting och Daniel Nylander.