lockf
is a piece of software that comes with FreeBSD (as well as other BSDs, I would assume). It's a simple C program that allows you to create a lock file with an exclusive lock and start a program running. Here is the man page. It's a simple program with a simple implementation that is very useful. This was written by John D. Polstra, copyright 1997, and I have taken the source and modified it so that it will work on linux systems.
This is very helpful when running a cron job that might run long enough that it would “overlap” with the next cron run. This will cause the overlapping instance to exit, alternatively after -t <seconds>
timeout.
Download the source package: lockf_linux.tar.gz
After downloading the above tar.gz, run the following as root in the directory you downloaded it to:
# tar -xzf lockf_linux.tar.gz # cd lockf # make && make install
The above will install the binary in /usr/bin
and the man page in /usr/share/man/man1
. If you want something different, just modify the paths in the Makefile
.
$ lockf --help usage: lockf [-ks] [-t seconds] file command [arguments]
A typical call would be:
$ lockf -t 30 /tmp/mybinary.lock mybinary --arg=blah --arg2=blah2
This would create a lockfile, /tmp/mybinary.lock
, that would cause any more lockf
calls with that file to fail. The -t 30
means that if lockf cannot obtain a lock after 30 seconds, it will exit.