Friday, July 2, 2010

Locking a mailbox file in SHELL Programming on Linux

Locking a mailbox file in SHELL Programming on Linux

function my_lockfile ()
{
TEMPFILE="$1.$$"
LOCKFILE="$1.lock"
{ echo $$ > $TEMPFILE } >& /dev/null || {
echo "No permission to access the directory `dirname $TEMPFILE`"
return 1
}
ln $TEMPFILE $LOCKFILE >& /dev/null && {
rm -f $TEMPFILE
return 0
}
kill -0 `cat $LOCKFILE` >& /dev/null && {
rm -f $TEMPFILE
return 1
}
echo "Removing stale lock file"
rm -f $LOCKFILE
ln $TEMPFILE $LOCKFILE >& /dev/null && {
rm -f $TEMPFILE
return 0
}
rm -f $TEMPFILE
return 1
}

lock any kind of file


wait for a lock
until my_lockfile /etc/passwd ; do
sleep 1
done

# The body of the program might go here
# [...]

# Then to remove the lock,
rm -f /etc/passwd.lock

No comments:

Post a Comment