> -----Original Message----- > From: Theuerkorn Johannes [mailto:[EMAIL PROTECTED]] > Sent: 30 September 2002 10:18 > To: '[EMAIL PROTECTED]' > Subject: how to know weather perl script is already running? > > > Hello List, > > i have a perl script that i have running from a cron Job. It > usually opens every 4 hours. But sometimes it takes the > script longer to execute its job so after cron opens up the > perl script as usual, i have two perl jobs running. > Is there any possibility to check weather the script is > already running? Maybe i can use a system command in the crontab? > > any help welcoe > > greets Johannes > > --
We use the following subs to do this on Linux: example call: # In your main program: # This will exit 0 if there are no available instances my $instance = getInstance("reporter",3); # maximum of 3 reporters # ------------------------------------------------------------------------ ----- # Get an instance name and lock # Used to control the maximum number of instances for a specified process # e.g. reporter.pl sub getInstance { my $name = shift; my $max = shift; my $msg = ''; $max ||= 1; $msg ||= "No available instances for '$name' [maximum $max already locked]"; my $locked = ''; foreach my $instance ( 1..$max ) { my $token = "$name$instance"; $locked = $token if lockToken($token); last if $locked; } # Note that we die gracefully print "\n$msg\n" unless $locked; exit 0 unless $locked; return $locked; } # ------------------------------------------------------------------------ ----- sub lockToken { my $token = shift; mkdir "/var/lock" unless -d "/var/lock"; mkdir "/var/lock/mylocks" unless -d "/var/lock/mylocks"; my $token_file = "/var/lock/mylocks/$token"; open(FH, ">$token_file") || LogFatal("Cannot open token locking file '$token_file' for writing: $OS_ERROR"); # Return success or failure depending on whether we can exclusively lock the file return flock(FH, LOCK_EX | LOCK_NB); } -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]