Hallo Thomas,
Danke! Hier werden die Sig's etwas ausfuehrlicher dokumentiert als bei kill -l
Beispiel-Schnipsel:
#!/bin/sh
lockfile="/dev/shm/myscript.lock"
trap "rm -f $lockfile" SIGKILL
# es hätte wie folgt lauten müssen (9 = SIGKILL): trap "rm -f $lockfile" 9
Ich wuerde sagen, die bash akzeptiert die 9 und das SIGKILL. Zumindest klappt das mit SIGINT und Ctrl-C. Das Script kann ich mit kill -9 <pid> killen, aber trap reagiert nicht auf 9 und nicht auf SIGKILL! Der Hund liegt irgendwo anders begraben. Ich werde nachher mal _ohne_ Variable testen und das lock-File direkt angeben.
trap "rm -f /dev/shm/myscript.lock" SIGKILL
In der Manpage zu signal steht folgender wichtiger Satz: "The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored." Man steht mit dem SIGKILL in C/C++ vor dem gleichen Problem und kann eben nicht abgefangen werden. Daher sollten man das SIGKILL immer im äußersten Notfall anwenden, wenn die Anwendung echt überhaupt nicht mehr reagiert. Daher ist ein SIGTERM (15) vorzuziehen: # kill -15 programm Somit gibst du dem Programm/Skript die Möglichkeit doch noch sauber zu beenden. Soweit alles klar? Sorry, das Beispiel von mir mit # trap "..." 9 kannst du verbrennen. -- Gruß Sebastian - openSUSE Member (Freespacer) http://de.opensuse.org/Benutzer:Freespacer Wichtiger Hinweis zur openSUSE Mailing Liste: http://de.opensuse.org/OpenSUSE_mailing_list_netiquette -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org