我需要定期运行Perl脚本(〜每3-5分钟一次)。我想确保一次只运行一个Perl脚本实例,所以下一个循环将不会启动,直到前一个完成。可能/应该通过cron的一些内置功能来实现,Perl还是我需要在脚本级处理它?
我对Perl和cron很新,所以帮助和一般的建议是值得赞赏的。
解决方法
我一直都很喜欢使用
File::NFSLock来获得独占锁的脚本本身。
use Fcntl qw(LOCK_EX LOCK_NB); use File::NFSLock; # Try to get an exclusive lock on myself. my $lock = File::NFSLock->new($0,LOCK_EX|LOCK_NB); die "$0 is already running!\n" unless $lock;
这与其他锁文件建议是一样的,除了我不需要做任何事情,除了尝试获得锁定。