shlock - Create lock files for use in shell scripts
shlock [
-b|
-c|
-u]
-f name -p
pid
shlock tries to create a lock file named
name and write the
process ID
pid into it. If the file already exists,
shlock will
read the process ID from the file and test to see whether the process is
currently running. If the process exists, then the file will not be created.
shlock exits with a zero status if it could create the lock file, or
non-zero if the file refers to a currently active process.
A Perl wrapper around
shlock can be used via the
"INN::Utils::Shlock" module.
- -b
- Process IDs are normally read and written in ASCII. If the
-b flag is used, then they will be written as a binary int.
- -c
- If the -c flag is used, then shlock will not
create a lock file, but will instead use the file to see if the lock is
held by another program. If the lock is valid, the program will exit with
a non-zero status; if the lock is not valid (i.e. invoking shlock
without the flag would have succeeded), then the program will exit with a
zero status.
-
-f name
-
name is the name of the lock file shlock
attempts to create. If the file already exists, it will read the process
ID from the file and exit with a non-zero status if this process is
currently active.
-
-p pid
-
pid is the process ID to write into the file
name.
- -u
- For compatibility with other systems, the -u flag is
accepted as a synonym for -b since binary locks are used by many
UUCP packages.
The following example shows how
shlock would be used within a shell
script:
LOCK=<pathrun in inn.conf>/LOCK.send
trap 'rm -f ${LOCK} ; exit 1' 1 2 3 15
if shlock -p $$ -f ${LOCK} ; then
# Do appropriate work.
else
echo "Locked by `cat ${LOCK}`"
fi
Written by Rich $alz <
[email protected]> for InterNetNews after a
description of HDB UUCP locking given by Peter Honeyman, and improved by
Berend Reitsma to solve a race condition. Converted to POD by Julien Elie.
INN::Utils::Shlock(3pm).