in reply to Preventing multiple instances
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Preventing multiple instances
by Bod (Parson) on Dec 17, 2020 at 23:07 UTC | |
by afoken (Chancellor) on Dec 18, 2020 at 00:27 UTC | |
by Bod (Parson) on Dec 18, 2020 at 14:38 UTC | |
by afoken (Chancellor) on Dec 18, 2020 at 16:33 UTC |