Benutzer-Werkzeuge

Webseiten-Werkzeuge


edv:os:unix:shell:example:abfangen_von_signalen

Abfangen von Signalen

Um das Skript vor vorschnellem Abbruch durch Signale zu schützen, müssen wir diese abfangen und behandeln. Unsere Reaktion wird beispielsweise sein, dass wir rasch alle temporären Dateien/Verzeichnisse löschen und anschließend das Skript verlassen. Bei den Signalen beschränken wir uns auf SIGINT (Nummer 2; Tastaturinterrupt) und SIGTERM (15). Ein trap-Aufruf zu Beginn unseres Skripts ist alles, was wir tun müssen.

#!/bin/sh
trap 'test -e /tmp/etc$$ && rm -r /tmp/etc$$; exit 0' 2 15

Wann immer eines der beiden Signale (hier 2 und 15) auf den Prozess einherfällt, wird trap das temporäre Verzeichnis samt Inhalt entfernen (rm -r /tmp/etc$$) - falls es existiert (test -e /tmp/etc$$) - und das Skript beenden (exit 0).

Sie können trap ebenso verwenden, um bestimmte Signal zu ignorieren. Wählen Sie hierfür eine der beiden Syntaxvarianten:

trap "" 2 3 15 19
# Alternativ:
trap : 2 3 15 19

Weitere Beispiele:

trap "echo SIGINT nicht erlaubt" INT
trap "echo SIGTERM nicht erlaubt" TERM
trap "echo SIGTSTP nicht erlaubt" TSTP

Um in einem Skript die Behandlung von Signalen wieder zuzulassen, ist ein Aufruf von trap ohne Argumente erforderlich.


Stand: 05.11.2009

EOF

edv/os/unix/shell/example/abfangen_von_signalen.txt · Zuletzt geändert: 2020/01/11 01:23 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki