Signale

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Inhaltsverzeichnis
  1. Programme
  2. Beispiele
  3. Signalarten
    1. Wichtig
    2. Einfache Signalliste
    3. Erweiterte Signalliste
  4. Links

Wiki/Icons/terminal.png Signale werden zur Steuerung von Prozessen verwendet. Ein Signal ist ein asynchrones Ereignis, das eine Unterbrechung (Interrupt) auf der Prozessebene bewirken kann. Es handelt sich dabei um ein einfaches Kommunikationsmittel zwischen zwei Prozessen, Prozess_1 sendet dem Prozess_2 eine Nachricht. Bei den versendeten Nachrichten selbst handelt es sich um einfache, ganze Zahlen, die aber auch als symbolische Namen (Alphawert) gesendet werden können.

Programme

Beispiele

Weiter Funktion der Signale können die Synchronisation, das Ausführen von im Programm definierten Aktionen (z.B. Konfigurationsdatei neu einlesen) oder auch nur Kommunikation untereinander sein.

Signalarten

Generell kann man die Signale in 3 Hauptgruppen einteilen:

Allein die Bash unterstützt über 60 verschiedene Signale die hier nicht alle aufgezeigt werden können, daher zwei ausgewählte Aufzählungen getrennt nach einfacher Signalliste für den Tagesgebrauch und einer erweiterten Signalliste für Kenner.

Wichtig

Achtung!

Dem normalen Beenden von Prozessen mit -SIGTERM (15) ist immer der Vorzug zu geben, weil dadurch dem Programm noch die Möglichkeit gegeben wird sich "anständig" zu beenden. Erst wenn ein -SIGTERM (15) nicht angenommen wird kann man den Kernel mit einem -SIGKILL (9) beauftragen den Prozess zu debuggen (Dump) und hart abzubrechen. Die empfangenden Programme können ein -SIGKILL (9) ebenso wie ein -SIGSTOP (19) nicht abfangen um programmspezifische Aktionen durchzuführen.

Die Signalnummer 0 hat keinen symbolischen Namen und dient lediglich der Abfrage ob ein Prozess läuft oder nicht. Zu beachten ist dabei, dass die PID in einem Rotationsverfahren vergeben wird und man nie sicher sein kann ob der Prozess noch läuft und mit der PID verbunden ist.

Einfache Signalliste

Signale zur Prozesskontrolle durch den "normalen" Benutzer
Nr. Name Aktion Bemerkung
1 SIGHUP Ende Trennen der Terminalverbindung, siehe auch Terminal schließen.
2 SIGINT Ende Unterbrechen der Terminalverbindung, siehe auch Strg+C.
3 SIGQUIT Dump & Ende Unterbrechen der Terminalverbindung und debuggen.
9 SIGKILL Dump & Ende Senden Abbruch und debuggen durch den Kernel, siehe auch Wichtig.
10 SIGUSR1 Intern Frei zur eigenen Benutzung, sofern in den Programmen integriert, siehe auch Fortschritt von dd abfragen.
12 SIGUSR2 Intern Frei zur eigenen Benutzung, sofern in den Programmen integriert.
15 SIGTERM Ende Standard bei allen kill-Programmen: Abschließen und beenden des Programms.
18 SIGCONT Restart Ein mit -SIGSTOP (19) angehaltener Prozess soll weiterlaufen, siehe auch bg %jobnummer.
19 SIGSTOP Anhalten Der Prozess wird pausiert und kann mit -SIGCONT (18) wieder gestartet werden.

Erweiterte Signalliste

erweiterte Liste der Signale.
Nr. Name Aktion Bemerkung
4 SIGILL Core & Ende Ungültige Instruktion wurde ausgeführt.
5 SIGTRAP Core & Ende Unterbrechung (Einzelschrittausführung).
6 SIGABRT Core & Ende Abnormale Beendigung.
7 SIGBUS Core & Ende Fehler auf dem System-Bus.
8 SIGFPE Core & Ende Problem bei einer Gleitkommaoperation, z.B. Teilung durch Null.
11 SIGSEGV Core & Ende Speicherzugriff auf unerlaubtes Speichersegment.
13 SIGPIPE Ende Es wurde in eine Pipe geschrieben/versuch mit O_NONBLOCK zu schreiben, aus der niemand liest.
14 SIGALRM Ende Zeituhr ist abgelaufen – alarm().
17 SIGCHLD Ignoriert Der Kind-Prozess wurde beendet oder angehalten.
20 SIGTSTP Anhalten Der Prozess wurde »von Hand« mit STOP angehalten.
21 SIGTTIN Anhalten Prozess wollte aus einem Hintergrundprozess der Kontroll-Dialogstation lesen.
22 SIGTTOU Anhalten Prozess wollte in einem Hintergrundprozess der Kontroll-Dialogstation schreiben.
27 SIGPROF Ende Timer zur Profileinstellung ist abgelaufen.
28 SIGWINCH Ignoriert Window-Größe hat sich verändert.
31 SIGSYS Core & Ende Ungültiges Argument bei System-Call.