Process signaler: Skillnad mellan sidversioner
Hoppa till navigering
Hoppa till sök
Admin (diskussion | bidrag) (Skapade sidan med '= 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 == {| class="...') |
(Ingen skillnad)
|
Versionen från 29 september 2025 kl. 12.00
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!