Re: trap und killall

Sebastian Siebert <[email protected]> Sat, 06 Mar 2010 19:37:59 +0100
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]