hi, Markus Schönhaber schrieb:
> Allerdings habe ich nicht wirklich verstanden, was Du genau machen willst. da war auch die Mail schon weg ... :-) Also nochmal die ausführliche Fassung: Ich habe einen Streamclient Daemon den ich über ein Init Script starten will. Soweit kein Problem. Wenn nun aber der 24h Verbindungsabbruch kommt, stirbt der Client sang und klanglos. Bisher habe ich dieses Problem über Cron "behoben". Da ich aber versuche ein wenig Bash zu lernen, mit den Schleifen, sah ich die Möglichkeit, das im Init Script zu erledigen. Soweit sogut, ich kann ihn starten und er prüft, ob der Prozess noch läuft. Allerdings kann ich ihn nicht mehr stoppen, da ich ihn nicht aus der Schleife bekomme. Meine Idee war nun also, beim starten eine $LOCKFILE anzulegen, und die Schleife prüft, ob es diese Datei gibt. Ist sie existent, läuft die while Schleife normal weiter und hält den Dienst am leben. Gibt es sie nicht mehr, zum Beispiel weil ich den Dienst gestoppt habe, und damit die $LOCKFILE gelöscht wurde, soll die Schleife stoppen und den Dienst nicht mehr am Leben erhalten. Im Anhang habe ich mal meiner Pre Alpha Version angehangen. Später werde ich es noch optimieren und den Code ein wenig aufräumen :-) cu denny
#! /bin/sh # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/usr/sbin:/usr/bin:/sbin:/bin:/opt/ices/bin/ DESC="ices Script for ices0" NAME=ices DAEMON=/opt/ices/bin/ices DAEMON_ARGS="/opt/ices/etc/ices.conf" PIDFILE=/var/run/$NAME.pid LOCKFILE=/opt/ices/log/ices.lock SCRIPTNAME=/etc/init.d/$NAME case "$1" in start) echo "Starte den Ice Client" $DAEMON $DAEMON_ARGS touch $LOCKFILE ID=`pidof ices` echo $ID > $PIDFILE while [ 1 ] do ps ax -o pid | grep $ID if [ $? = 0 ] then echo "lebt" sleep 5 & else echo "Phoenix aus der Asche" $0 start fi done ;; stop) echo "Stoppe den Ice Client" if [ -e "$PIDFILE" ] then kill `cat $PIDFILE` > /dev/null 2>&1 rm $LOCKFILE $PIDFILE > /dev/null 2>&1 else echo "Der Client läuft nicht" fi ;; restart) $0 stop $0 start ;; status) echo "Checke Ice Client" if [ "`pidof -s ices`" ] then echo "Der Ice Client lebt" else echo "Der ice Client ist tot" fi ;; *) echo "Usage: $0 {start|restart|status}" exit 1 ;; esac
signature.asc
Description: OpenPGP digital signature
-- ---------------------------------------------------------------------------- PUG - Penguin User Group Wiesbaden - http://www.pug.org