#!/usr/local/bin/perl5
use Fcntl qw(:flock);
my $rxdScriptLockFile="/tmp/.lock";
my $rxdScriptLock=1;
my $lockfilestatus;
&setScriptLock();
sub setScriptLock {
my $t = 0;
if ( not -e $rxdScriptLockFile ) {
system ( "touch $rxdScriptLockFile")
}else{
print "using exist lock file\n";
system "ls -l $rxdScriptLockFile"
}
chomp($lockfilestatus = `date;/bin/ls -alF $rxdScriptLockFile 2>&1`);
if ( open(LOCK, "<$rxdScriptLockFile") ) {
# should be LOCK_EX | LOCK_NB, but could not find appropriate definition
$b = flock( LOCK, LOCK_EX|LOCK_NB );
while ( !$b && $t < 60) {
print ("INFO", "Waited for $t seconds that script lock gets released...\n");
sleep(1);
$t++;
$b = flock( LOCK,LOCK_EX|LOCK_NB );
}
if ( $b ) {
print ("Script lock is released after wait $t secs") if $t > 0;
print "Got Lock, now sleep 10s\n";
sleep 10;
} else {
print ("Unable to get script lock (flock error code:$b) after $t seconds: $lockfilestatus \n");
}
} else {
print ( "Unable to create lock file $rxdScriptLockFile: $lockfilestatus\n");
}
}
阅读(549) | 评论(0) | 转发(0) |