Process signaler: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
 
Rad 112: Rad 112:
* [[killall(1)]]
* [[killall(1)]]
* [[pkill(1)]]
* [[pkill(1)]]
* [[trap(1)]]
* [[trap(1p)]]


= Sidslut =
= Sidslut =

Nuvarande version från 29 september 2025 kl. 12.12

Signaler i Unix och Linux

I Unix och Linux används signaler för att kommunicera med processer. Signaler kan skickas av systemet självt (t.ex. vid hårdvarufel eller terminalhändelser) eller manuellt av användare via kommandot kill.

En signal kan be en process att avsluta, pausa, återupptas eller utföra en specifik åtgärd. Vissa signaler kan fångas upp av processen, medan andra (t.ex. SIGKILL) inte kan ignoreras.

Vanliga signaler

Nummer Namn Beskrivning
1 SIGHUP Ursprungligen "hang up". Skickas när terminalen stängs. Vanligtvis används den för att få en process (t.ex. en server) att läsa om sin konfiguration.
2 SIGINT Avbryt signal. Skickas när användaren trycker Ctrl+C i terminalen.
3 SIGQUIT Avslutar processen och skapar en core dump. Skickas ofta med Ctrl+\.
9 SIGKILL Dödar processen omedelbart. Kan inte fångas eller ignoreras.
15 SIGTERM Standard. Ber processen avsluta på ett kontrollerat sätt (”snällt”). Kan fångas av processen för att städa upp innan avslut.
18 SIGCONT Fortsätter en pausad process (från SIGSTOP).
19 SIGSTOP Pausar processen. Kan inte fångas eller ignoreras.
20 SIGTSTP Pausar processen när användaren trycker Ctrl+Z.
10 SIGUSR1 Användardefinierad signal. Program kan själva bestämma vad den betyder.
12 SIGUSR2 Ytterligare en användardefinierad signal.

Kommandot kill

Trots sitt namn används kommandot kill inte enbart för att döda processer, utan för att skicka signaler till dem.

Syntax

kill [-signal] PID
  • -signal kan anges som namn (t.ex. -SIGTERM, -KILL) eller som nummer (t.ex. -15, -9).
  • PID är processens ID-nummer.

Exempel

  • Avsluta en process "snällt":
kill 1234

(skickar SIGTERM som standard)

  • Döda en process omedelbart:
kill -9 1234
  • Ladda om konfigurationen för en server:
kill -HUP 2345
  • Pausa en process:
kill -STOP 5678
  • Fortsätt en pausad process:
kill -CONT 5678
  • Lista alla signaler:
kill -l

Andra relaterade kommandon

  • killall – Skickar signaler till alla processer med ett visst namn.
  • pkill – Skickar signaler till processer baserat på namn och andra kriterier.

Exempel på praktisk användning

  • Starta om nginx genom att läsa om konfigurationen:
sudo kill -HUP $(cat /run/nginx.pid)
  • Försök först med SIGTERM, använd sedan SIGKILL om processen inte reagerar:
kill -15 4321
kill -9 4321
  • Skicka en användardefinierad signal till ett skript:
#!/bin/bash
trap "echo 'Fick SIGUSR1!'" SIGUSR1
while true; do sleep 1; done

Kör skriptet i en terminal, sedan i en annan:

kill -USR1 <PID>

→ Skriptet skriver då ut: Fick SIGUSR1!

Se även

Sidslut

Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till PC Service som har sponsrat Linux.se med webbhotell.