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

Attachment: signature.asc
Description: OpenPGP digital signature

-- 
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an