BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Paralleles Ausführen eines Shell-Skriptes verhindern

Soll verhindert werden, dass ein Shell-Skript mehrere Male parallel gestartet wird, kann dazu shlock verwendet werden. Im FreeBSD-Portbaum findet man shlock unter sysutlis/shlock:

# cd /usr/ports/sysutils/shlock && make install clean

Benutzer von pkgng können shlock wie folgt installieren:

# pkg install shlock

Nun kann mit shlock ein Shell-Skript mit einer Lockdatei geschützt werden:

# vi lock.sh
LOCK=/var/run/my.lock
trap 'rm -f ${LOCK} ; exit 1' 1 2 3 15
if shlock -p $$ -f ${LOCK} ; then
        sleep 60
else
        echo "Locked by `cat ${LOCK}`"
fi

Versucht man nun das Shell-Skript zweimal zu starten, wird dies von shlock verhindert:

# sh lock.sh &
[1] 84001
# sh lock.sh
Locked by 84001

Mehr Informationen zu shlock findet man in der Manpage shlock(1).

Comments (1)  Permalink