PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell / trap - was mache ich falsch.



LIttleBoy
06-07-2005, 18:13
Hallo,
ich wollte ein SKript schreiben, welches sich selbst als Hintergrundprozess aufruft - und dann über start / stop usw. gesteuert werden kann.
Das folgende Skript sollte als Grundgerüst herhalten:


#!/bin/sh

cleanup()
{
echo "Cleanup called"
exit 1
}

trap "cleanup" 2

case "$1" in
start)
shift
$0 daemon $1 &
echo "Daemon started with pid $!"
;;
daemon)
while [ 1 ]; do
sleep 1
done
;;
esac


Rufe ich das Skript nun wie folgt auf:
./testd daemon &
Kann ich mit
kill -2 <pid>
das Skript "georndet" verlassen, d.h. cleanup() wird aufgerufen.

Rufe ich das Skript mit:
./testd start
auf - und versuche an die (korrekte) ausgegebene PID das selbe Kommando zu schicken, bleibt das völlig wirkungslos.

Habe ich das irgendwas übersehen? Oder ist das so wie ich mir das vorstelle nicht machbar?

Jasper
06-07-2005, 18:44
Habe ich das irgendwas übersehen? Oder ist das so wie ich mir das vorstelle nicht machbar?

SIGINT ist für deine zwecke unbrachbar. SIGINT ist ein keyboardgenerated signal und wird ignoriert wenn der shell-prozess nicht unter job-control steht.
nimm mal SIGTSTP dafür, dann sollte es gehen.


-j

LIttleBoy
07-07-2005, 12:00
Oh, daran habe ich nicht gedacht - vielen Dank