Zamykani v shell skriptu

Martin Mačok martin.macok na underground.cz
Středa Prosinec 6 15:43:28 CET 2000


On Wed, Dec 06, 2000 at 03:23:42PM +0100, Gratz Jaroslav wrote:
> Potreboval bych v shell skriptu zajistit, aby mi dva stejne skripty
> neprovadely nejakou vec soucasne. Ty skripty se muzou spustit zcela
> nahodne. Zatim to resim takto:

PROGPATH=/home/martin/misc/setiathome-2.0
PROGCMD=./setiathome
PROGOPT="-nice 19"
PROGOUT=LOG
PROGLOCK=$PROGPATH/running
VERBOSE=false

trap PROGSTOP `seq 1 15`

function PROGSTART () {
if mkdir "$PROGLOCK" 2>/dev/null; then
        cd $PROGPATH
        $VERBOSE && echo "Starting $PROGCMD $PROGOPT"
        $PROGCMD $PROGOPT >$PROGOUT &
        PROGPID=$!
        touch $PROGLOCK/$PROGPID
fi
}

function PROGSTOP () {
if [ -d "$PROGLOCK" ] ; then
        PROGPID=`ls $PROGLOCK`
        if rm $PROGLOCK/$PROGPID ; then
                rmdir $PROGLOCK
                kill -HUP $PROGPID
                $VERBOSE && echo "Stopping $PROGCMD $PROGOPT"
                kill $PROGPID
        fi
fi
}

To je priklad, jak se da zajistit, aby funkce PROGSTOP a PROGSTART
nemohly probihat soucasne.

-- 
< Martin Mačok    .-=  martin.macok na underground.cz  =-.   < iso-8859-2 > 
  \\. http://kocour.ms.mff.cuni.cz/~macok/  http://underground.cz/ .//
    \\\..         `-=    t.r.u.s.t   n.0  o.n.e     =-'        ..///


Další informace o konferenci Linux