At most 1 running copy

Ed Wilts ewilts at ewilts.org
Sat Nov 27 14:03:32 UTC 2004


On Sat, Nov 27, 2004 at 09:48:31PM +0800, John Summerfield wrote:
> On Saturday 27 November 2004 12:49, Ed Wilts wrote:
> > For the record, this snippet works just fine (a per-user lock).
> >
> > 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");
> 
> 
> I nominated /var/run for a reason:-)
> It gets cleaned out on a reboot.

1.  /var/run is not world writable and I don't think it should be.  In
addition, I wanted to restrict the execution to once per user (actually
once per user input config file, but that's a different story), not once per
system.

2.  What's a reboot?  :-)

> Sure locks go, but it's nice to <plonk> the files too.

If ftphandler.lock hangs around because the job failed once, it will be
deleted the next time it's run successfully.  I could sweep through the
file system deleting old lock files too although I don't think it's
worth the effort.  That could be in cron.monthly and it would run far
more frequently than waiting for a reboot...

-- 
Ed Wilts, RHCE
Mounds View, MN, USA
mailto:ewilts at ewilts.org
Member #1, Red Hat Community Ambassador Program




More information about the users mailing list