Re: trap und killall
David Haller <[email protected]> Sun, 7 Mar 2010 01:57:32 +0100
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
Hallo,
Am Sam, 06 Mär 2010, Thomas Moritz schrieb:
>Am Samstag, 6. März 2010 20:14:31 schrieb David Haller:
>Hallo David,
>
>> >> lockfile="/dev/shm/myscript.lock"
>> >>
>> >> trap "rm -f $lockfile" SIGKILL
>>
>> Nicht portabel.
>
>Nicht moeglich!
Das bezog sich auf die Verwendung der "SIG" Prefix bei angabe der
Signale, die das 'trap' abfangen soll.
http://www.opengroup.org/onlinepubs/7990989775/xcu/chap2.html#tag_001_014_014
====
The condition can be EXIT, 0 (equivalent to EXIT) or a signal
specified using a symbolic name, without the SIG prefix, as listed in
^^^^^^^^^^^^^^^^^^^^^^
the tables of signal names in the XSH specification under <signal.h>;
for example, HUP, INT, QUIT, TERM. Implementations may permit
lower-case signal names or names with the SIG prefix as an
extension. Setting a trap for SIGKILL or SIGSTOP produces undefined
results.
====
D.h. ohne "SIG" ist Pflicht, mit SIG ist eine optionale Erweiterung.
>> ># es hätte wie folgt lauten müssen (9 = SIGKILL):
>> >trap "rm -f $lockfile" 9
>>
>> Das bekommt man aber nicht per 'killall script'. UND ES KANN EH
>> NICHT ABGEFANGEN WERDEN!
>
>s.o.
s.o. Erst hier geh ich auf's "KILL" ein ;)
>> trap "rm -f '$lockfile'" EXIT TERM INT HUP
>>
>> "EXIT" ist das gesuchte, das gibt's beim regulären Beenden (z.B.
>> durch 'exit 0' im script, oder auch wenn das Script per
>> kill/killall mit SIGTERM (15) beendet wird.
>
>Man - David, warum musst Du immer so lange pennen? Jetzt kann ich
>meine Aenderungen alle wieder zurueckschreiben und doch die
>lock-Files beibehalten :-)
Tja nu. Du hättest auch in man bash nach der Doku zu 'trap' suchen
können. ;)
==== man bash ====
SHELL BUILTIN COMMANDS
[..]
trap [-lp] [arg] [sigspec ...]
[..]
signal number. If a sigspec is EXIT (0) the com
mand arg is executed on exit from the shell.
====
Und da sich bei SIGTERM (15) das Script regulär beendet wird AFAIK
auch ein trap auf EXIT ausgeführt.
-dnh
--
"Gott wollte angeben, als er dich erschaffen hat."
-- "Jake" zu "Anna" in "Glauben ist alles"