Signal abfangen, trap?

12/12/2007 - 13:06 von Christian Kujau | Report spam
Hi,

ich habe ein Skript, was im Hintergrund in einer Schleife laeuft und ein
paar Hosts anpingt. Von Zeit zu Zeit scheint sich das Skript zu beenden
(oder wird beendet). Aus diesem Grund laeuft nun schon ein cronjob, der
alle 5 Mintuen prueft, ob das Skript nocht laeuft. Das funktioniert auch,
aber mich interessiert, *was* dieses Skript beendet. Ich kann verschiedene
Traps setzen, um evtl. eintreffende Signale abzufangen, etwa:

trap "echo Signal 15 empfangen" 15
trap "echo Signal 6 empfangen" 6
...usw.

Kann man evtl. anders (read: eleganter) herausbekommen, welches Signal zum
Beenden gefuehrt hat?

Danke,
Christian.
BOFH excuse #139:

UBNC (user brain not connected)
 

Lesen sie die antworten

#1 Hauke Laging
12/12/2007 - 15:32 | Warnen spam
Christian Kujau schrieb am Mittwoch 12 Dezember 2007 13:06:

Kann man evtl. anders (read: eleganter) herausbekommen, welches
Signal zum Beenden gefuehrt hat?



Ja.

Statt
./script &

so was wie

strace -o /my/dumpfile ./script &

Oder, ressourcenschonender:

strace sleep 100 2>&1 | tail
mmap2(NULL, 54, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f5b000
close(3) = 0
open("/usr/lib/locale/de_DE.UTF-8/LC_CTYPE", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/lib/locale/de_DE.utf8/LC_CTYPE", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size%4180, ...}) = 0
mmap2(NULL, 254180, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7cf3000
close(3) = 0
nanosleep({100, 0}, 0) = ? ERESTART_RESTARTBLOCK (To
be restarted)
SIGTERM (Terminated) @ 0 (0)
+++ killed by SIGTERM +++

da ja eh nur das Ende relevant ist.

Für einen Hintergrundprozess müsste man dann natürlich die Ausgabe
umbiegen:

strace sleep 100 2>&1 | tail > /my/dumpfile &


CU

Hauke
http://www.hauke-laging.de/ideen/
http://www.hauke-laging.de/software/
http://zeitstempel-signatur.hauke-laging.de/
Wie können 59.054.087 Leute nur so dumm sein?

Ähnliche fragen