At most 1 running copy
Ed Wilts
ewilts at ewilts.org
Sat Nov 27 13:59:23 UTC 2004
On Sat, Nov 27, 2004 at 08:06:40AM -0500, Paul Tomblin wrote:
> On Fri, 26 Nov 2004 22:49:51 -0600, Ed Wilts <ewilts at ewilts.org> wrote:
>
> > use FileHandle;
> > use Fcntl qw(:DEFAULT :flock);
> > my $FH = new FileHandle;
> > sysopen(FH, "ftphandler.lock", O_RDWR | O_CREAT) or die "can't open ftphandler.lock: $!";
> > flock(FH, LOCK_EX | LOCK_NB) or exit;
> > print "running...\n";
> > [rest of code here]
> > close (FH);
> > unlink ("ftphandler.lock");
>
> Two things I see off the top of my head:
> - O_RDWR|O_CREAT won't fail if the file already exists. How does this
> stop people from running it twice if the secon one starts up before
> the first one has time to flock it? Wouldn't you be better off using
> O_EXCL|O_CREAT?
The condition I need to test for is the possibility of a cron job
starting a second copy before the first completes. Since the
granularity of cron jobs is to the minute, this isn't a problem for me.
The users that are running these cron jobs don't have interactive
access to run the script.
> - Beware of using flock (or O_CREAT) on NFS mounted file systems.
Yup, that's in the Perl FAQ too. Not an issue for me.
Thanks,
.../Ed
--
Ed Wilts, RHCE
Mounds View, MN, USA
mailto:ewilts at ewilts.org
Member #1, Red Hat Community Ambassador Program
More information about the fedora-list
mailing list