[Berlin-wireless] dotlockfile
lorenz schori
lorenz.schori
So Sep 30 17:11:26 CEST 2007
Hallo
Ich erinnere mich diffus an eine Diskussion betreffend locking-
mechanismen für Scripts. Weil ich auf wlanware nichts gefunden habe
müsste das wohl in dieser Liste gewesen sein. Ich hab jetzt eine mini-
Version des dotlockfile-Kommandos in ash implementiert (auf baseis
von [1]), die für mich ganz gut funktioniert. Soll ich dafür ein ipk
machen oder brauchen wir sowas sowieso direkt in der Firmware?
locking:
dotlockfile [-r<sekunden>] [-l] bla
unlocking:
dotlockfile -u bla
LG
Lorenz
[1] http://members.toast.net/art.ross/rute/
node24.html#SECTION002471000000000000000
#!/bin/sh
usage () {
echo "$0 -l|-u file"; exit 1
}
try_lock() {
ln $1 $2 >/dev/null 2>&1 && rm -f $1
}
lock () {
TEMPFILE="$1.$PPID"
LOCKFILE="$1.lock"
echo $PPID >$TEMPFILE || return 1
try_lock $TEMPFILE $LOCKFILE && return 0
# rm stale
kill -0 $(cat $LOCKFILE) >/dev/null 2>&1 && {
rm -f $TEMPFILE; return 1
}
rm -f $LOCKFILE
try_lock $TEMPFILE $LOCKFILE && return 0
rm -f $TEMPFILE; return 1
}
unlock () {
rm -f $1.lock
}
op="l"
retry=5
while getopts "luhr:" Opt; do case $Opt in
l|u ) op=$Opt;;
r ) retry=$OPTARG;;
* ) usage;;
esac; done
shift $(($OPTIND - 1))
[ -z "$1" ] && usage
case $op in
l ) while ! lock $1; do
[ $retry -gt 0 ] && {
cnt=$((cnt+1));
[ $cnt -ge $retry ] && exit 1;
}
sleep 1;
done;;
u ) unlock $1;;
esac
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : PGP.sig
Dateityp : application/pgp-signature
Dateigröße : 186 bytes
Beschreibung: This is a digitally signed message part
URL : <http://lists.berlin.freifunk.net/pipermail/berlin/attachments/20070930/be550a65/attachment.pgp>
Mehr Informationen über die Mailingliste Berlin