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
ÖVERSÄTTNING
Peter Krefting och Daniel Nylander.