In very simple cases, such as this one, I use shared memory, or create a memory-backed directory:
sudo mkdir /var/memdir
Add the following line to the bottom of your /etc/fstab file (you'll need sudo to do this):
tmpfs /var/memdir tmpfs nodev,nosuid,size=1M 0 0
You've now created a directory, /var/memdir which only exists in memory (meaning it'll be wiped after reboot). It's only one megabyte, increase size as necessary.
Put your lock file in that directory. In simple cases, like the one you've got, I don't even write anything to the file, I just simply created it, then use exit if -e '/var/memdir/prog_name.lck';.
A more complete example:
use warnings; use strict; use File::Touch; my $lock = '/var/memdir/script.lock'; exit if -e $lock; touch($lock); # dies on error by default printf "Exists after create: %d\n", -e $lock // 0; # do stuff unlink $lock or die "Can't delete the damned lock file $lock: $!"; printf "Exists after delete: %d\n", -e $lock // 0;
Output:
spek@scelia ~/scratch $ perl script.pl Exists after create: 1 Exists after delete: 0
In reply to Re: Preventing multiple instances
by stevieb
in thread Preventing multiple instances
by Bod
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |