Linux-Signale: Liste mit Nummern und Bedeutung

Linux-Signale von SIGHUP bis SIGSYS mit Nummer, Standardaktion und Beispiel. Geben Sie einen Namen, eine Nummer oder einen Exit-Status wie 137 ein und kopieren Sie den passenden kill-Befehl.

Name (mit oder ohne SIG), Nummer 1–64 oder Exit-Status 129–192

57 Einträge

Beenden und Abbrechen

SIGHUPNr. 1, Standard: beenden. Terminal oder Verbindung wurde getrennt. Viele Daemons wie nginx oder sshd lesen damit ihre Konfiguration neu ein.Senden: kill -HUP <PID>
SIGINTNr. 2, Standard: beenden. Unterbrechung von der Tastatur, ausgelöst durch Strg+C.Senden: kill -INT <PID>
SIGQUITNr. 3, Standard: beenden mit Core-Dump. Ausgelöst durch Strg+\; Java-Programme geben damit stattdessen einen Thread-Dump aus.Senden: kill -QUIT <PID>
SIGKILLNr. 9, Standard: beenden. Der Kernel beendet den Prozess sofort. Kann weder abgefangen noch blockiert noch ignoriert werden, Aufräumcode läuft nicht. Nur als letztes Mittel.Senden: kill -9 <PID>
SIGUSR1Nr. 10, Standard: beenden. Frei für eigene Zwecke. GNU dd gibt damit zum Beispiel den bisherigen Fortschritt aus.Senden: kill -USR1 <PID>
SIGUSR2Nr. 12, Standard: beenden. Zweites frei verwendbares Signal für eigene Zwecke.Senden: kill -USR2 <PID>
SIGPIPENr. 13, Standard: beenden. Schreiben in eine Pipe oder einen Socket, dessen Leser schon geschlossen ist, etwa bei befehl | head.Senden: kill -PIPE <PID>
SIGALRMNr. 14, Standard: beenden. Ein mit alarm() gesetzter Timer ist abgelaufen.Senden: kill -ALRM <PID>
SIGTERMNr. 15, Standard: beenden. Höfliche Aufforderung zum Beenden; das Programm kann aufräumen. Standard bei kill, systemctl stop, docker stop und Kubernetes.Senden: kill -TERM <PID>
SIGSTKFLTNr. 16, Standard: beenden. Stack-Fehler eines Koprozessors; unter Linux praktisch unbenutzt.Senden: kill -STKFLT <PID>
SIGPWRNr. 30, Standard: beenden. Meldung über Stromausfall, etwa von einer USV-Software.Senden: kill -PWR <PID>

Programmfehler (Core-Dump)

SIGILLNr. 4, Standard: beenden mit Core-Dump. Ungültige Maschinenanweisung, etwa Programm für eine neuere CPU-Generation gebaut.Senden: kill -ILL <PID>
SIGTRAPNr. 5, Standard: beenden mit Core-Dump. Haltepunkt oder Trace-Trap, von Debuggern wie gdb genutzt.Senden: kill -TRAP <PID>
SIGABRTNr. 6, Standard: beenden mit Core-Dump. Das Programm hat abort() aufgerufen, zum Beispiel nach einer fehlgeschlagenen assert-Prüfung. SIGIOT ist derselbe Wert.Senden: kill -ABRT <PID>
SIGBUSNr. 7, Standard: beenden mit Core-Dump. Busfehler, etwa Zugriff auf eine per mmap eingeblendete Datei, die inzwischen gekürzt wurde.Senden: kill -BUS <PID>
SIGFPENr. 8, Standard: beenden mit Core-Dump. Arithmetischer Fehler, zum Beispiel ganzzahlige Division durch null.Senden: kill -FPE <PID>
SIGSEGVNr. 11, Standard: beenden mit Core-Dump. Speicherzugriffsfehler („Segmentation fault“): Zugriff auf nicht erlaubten Speicher.Senden: kill -SEGV <PID>
SIGXCPUNr. 24, Standard: beenden mit Core-Dump. Die erlaubte CPU-Zeit (ulimit -t) ist überschritten.Senden: kill -XCPU <PID>
SIGXFSZNr. 25, Standard: beenden mit Core-Dump. Die erlaubte Dateigröße (ulimit -f) ist überschritten.Senden: kill -XFSZ <PID>
SIGSYSNr. 31, Standard: beenden mit Core-Dump. Ungültiger Systemaufruf, zum Beispiel von einem seccomp-Filter blockiert.Senden: kill -SYS <PID>

Job-Steuerung

SIGCHLDNr. 17, Standard: ignorieren. Ein Kindprozess wurde beendet, angehalten oder fortgesetzt.Senden: kill -CHLD <PID>
SIGCONTNr. 18, Standard: fortsetzen. Setzt einen angehaltenen Prozess fort, wie fg oder bg in der Shell.Senden: kill -CONT <PID>
SIGSTOPNr. 19, Standard: anhalten. Hält den Prozess an; kann wie SIGKILL nicht abgefangen oder ignoriert werden.Senden: kill -STOP <PID>
SIGTSTPNr. 20, Standard: anhalten. Anhalten vom Terminal mit Strg+Z; anders als SIGSTOP abfangbar.Senden: kill -TSTP <PID>
SIGTTINNr. 21, Standard: anhalten. Ein Hintergrundprozess wollte vom Terminal lesen.Senden: kill -TTIN <PID>
SIGTTOUNr. 22, Standard: anhalten. Ein Hintergrundprozess wollte auf das Terminal schreiben oder dessen Einstellungen ändern.Senden: kill -TTOU <PID>

Ein-/Ausgabe, Timer, Echtzeit

SIGURGNr. 23, Standard: ignorieren. Dringende Daten (Out-of-Band) auf einem Socket.Senden: kill -URG <PID>
SIGVTALRMNr. 26, Standard: beenden. Virtueller Timer, zählt nur CPU-Zeit im Benutzermodus.Senden: kill -VTALRM <PID>
SIGPROFNr. 27, Standard: beenden. Profiling-Timer, von Profilern genutzt.Senden: kill -PROF <PID>
SIGWINCHNr. 28, Standard: ignorieren. Die Fenstergröße des Terminals hat sich geändert; Programme wie vim oder less zeichnen neu.Senden: kill -WINCH <PID>
SIGIONr. 29, Standard: beenden. Ein-/Ausgabe ist jetzt möglich. SIGPOLL ist derselbe Wert.Senden: kill -IO <PID>
SIGRTMIN … SIGRTMAXNr. 34 bis 64, Standard: beenden. Echtzeitsignale: werden in Warteschlangen gestellt und nicht zusammengefasst. Die glibc nutzt 32 und 33 intern, deshalb zeigt die Shell SIGRTMIN als 34.Senden: kill -l

Befehle und Tastenkürzel

kill -lAlle Signalnamen mit Nummern auflisten
kill -l 137In der Bash: Signalnamen zu einem Exit-Status ausgeben, hier KILL
kill 1234Schickt SIGTERM an den Prozess mit der PID 1234
kill -s TERM 1234Signal ausdrücklich per Name senden, gleichwertig zu kill -TERM 1234
kill -9 1234SIGKILL: sofort beenden, wenn SIGTERM nicht wirkt
kill -0 1234Sendet nichts, prüft nur, ob der Prozess existiert und Sie ihm Signale schicken dürfen
kill -HUP $(cat /run/nginx.pid)Konfiguration eines Daemons über seine PID-Datei neu laden
pkill -TERM -f "python app.py"Alle Prozesse beenden, deren Befehlszeile den Text enthält
killall -HUP nginxSignal an alle Prozesse mit diesem Namen (Linux, Paket psmisc)
trap 'rm -f "$tmp"' EXITBeim Ende des Skripts aufräumen, egal ob normal oder nach Fehler
trap 'echo abgebrochen; exit 130' INT TERMEigene Behandlung für Strg+C und SIGTERM im Skript
trap '' HUPSignal im Skript ignorieren
trap - INTStandardverhalten für ein Signal wiederherstellen
timeout 10 befehlSchickt nach 10 Sekunden SIGTERM; Exit-Code dann 124
timeout -k 5 10 befehlNach 10 Sekunden SIGTERM, 5 Sekunden später SIGKILL, falls der Prozess noch läuft
nohup befehl &Befehl im Hintergrund starten, der SIGHUP beim Abmelden ignoriert
Strg+CSchickt SIGINT an den Vordergrundprozess
Strg+ZSchickt SIGTSTP, der Prozess wird angehalten; weiter mit fg oder bg
Strg+\Schickt SIGQUIT, beendet meist mit Core-Dump
systemctl kill -s HUP nginx.serviceSignal an alle Prozesse eines systemd-Dienstes
systemctl reload nginxNeu laden über die im Dienst hinterlegte Methode, oft per SIGHUP
docker stop -t 30 webSchickt SIGTERM und nach 30 Sekunden SIGKILL (Standard sind 10 Sekunden)
docker kill --signal=HUP webBeliebiges Signal an den Hauptprozess eines Containers
grep Sig /proc/1234/statusZeigt als Bitmasken, welche Signale der Prozess blockiert (SigBlk), ignoriert (SigIgn) und abfängt (SigCgt)
strace -e trace=signal -p 1234Mitschneiden, welche Signale ein laufender Prozess empfängt

Alles läuft in Ihrem Browser. Eingaben verlassen Ihr Gerät nicht.

Linux-Signale verstehen

Diese Liste der Linux-Signale enthält alle 31 Standardsignale mit ihren Signalnummern, der Standardaktion und einer Erklärung, dazu die Echtzeitsignale und 25 Befehle rund um kill, trap und timeout. Oben können Sie einen Namen, eine Nummer oder einen Exit-Status eingeben: Aus 137 wird so SIGKILL, aus 143 SIGTERM.

Ein Signal ist eine kurze Nachricht des Kernels oder eines anderen Prozesses an ein Programm. Die meisten Signale kann ein Programm abfangen und darauf reagieren, etwa beim Empfang von SIGTERM Verbindungen schließen und Daten speichern. SIGKILL und SIGSTOP sind die Ausnahme: Sie wirken immer, deshalb ist kill -9 verlässlich, aber grob. Gute Praxis ist erst SIGTERM, dann einige Sekunden warten und nur im Notfall SIGKILL. So machen es auch docker stop und Kubernetes.

In Shell-Skripten fangen Sie Signale mit trap ab, zum Beispiel um temporäre Dateien zu löschen. Wird ein Prozess durch ein Signal beendet, meldet die Shell den Exit-Status 128 plus Signalnummer. Die Nummern gelten für Linux auf x86 und ARM; macOS, BSD sowie Linux auf MIPS oder SPARC weichen teilweise ab. Was die übrigen Rückgabewerte bedeuten, steht bei den Exit-Codes.

Anleitung: Linux-Signale in 4 Schritten

  1. Geben Sie im Feld „Signal oder Nummer“ einen Namen wie TERM, eine Nummer wie 9 oder einen Exit-Status wie 137 ein.
  2. Lesen Sie im Ergebnis Nummer, Standardaktion und den passenden kill-Befehl ab.
  3. Filtern Sie die Liste darunter über „Suchen“ oder „Gruppe“, zum Beispiel nach „Job-Steuerung“.
  4. Kopieren Sie Signalname oder Befehl mit „Kopieren“ in Ihr Terminal oder Skript.

Typische Anwendungsfälle

  • Einen Container oder Dienst sauber beenden und wissen, ob SIGTERM oder SIGKILL geschickt wird.
  • Exit-Status 137 oder 143 in CI- oder Kubernetes-Logs einem Signal zuordnen.
  • Ein Shell-Skript mit trap so absichern, dass temporäre Dateien beim Abbruch gelöscht werden.
  • Einen Daemon per SIGHUP seine Konfiguration neu laden lassen, ohne ihn neu zu starten.
Fragen

Häufige Fragen

Was ist der Unterschied zwischen SIGTERM und SIGKILL?

SIGTERM (15) bittet das Programm, sich zu beenden; es kann aufräumen oder das Signal sogar ignorieren. SIGKILL (9) beendet den Prozess sofort durch den Kernel, ohne dass das Programm reagieren kann. Daten im Speicher gehen dabei verloren.

Warum bedeutet Exit-Code 137 SIGKILL?

Endet ein Prozess durch ein Signal, meldet die Shell 128 plus Signalnummer. 128 + 9 ergibt 137. Häufige Ursachen sind der OOM-Killer des Kernels bei Speichermangel, docker kill oder kill -9.

Welches Signal sendet Strg+C?

SIGINT (2). Strg+Z sendet SIGTSTP (20) und hält den Prozess an, Strg+\ sendet SIGQUIT (3).

Wie fange ich Signale in einem Bash-Skript ab?

Mit trap: trap 'aufraeumen' INT TERM ruft die Funktion bei SIGINT und SIGTERM auf. Das Pseudo-Signal EXIT greift bei jedem Ende des Skripts. SIGKILL lässt sich nicht abfangen.

Kann ein Prozess SIGKILL ignorieren?

Nein. SIGKILL und SIGSTOP können weder abgefangen noch blockiert noch ignoriert werden. Ein Prozess im Zustand D (nicht unterbrechbarer Schlaf, etwa beim Warten auf ein hängendes Laufwerk) stirbt aber erst, wenn der Kernel-Aufruf zurückkehrt.

Warum zeigt kill -l bei mir andere Nummern?

Die Nummern sind nicht auf allen Systemen gleich. Diese Liste gilt für Linux auf x86 und ARM. macOS und BSD nutzen für SIGUSR1, SIGBUS oder SIGCHLD andere Werte, MIPS und SPARC unter Linux ebenfalls. Signalnamen sind deshalb in Skripten die sicherere Wahl.

Weitere Werkzeuge

Das könnte auch helfen

Alle 558 Werkzeuge