什么CPAN模块,使用了非阻塞文件锁定用Perl
-
27-09-2019 - |
题
我要确保只有一个进程时运行。所以我想确保JOBB不运行,除非职吧没有运行。
这会,如果它有重试锁,所以我没有代码,有些能力是巨大的。东西依稀这样的:
LockFileModule->lock(
lockfile => '/fabulous/pants',
retries => 12,
timeout => 25,
timebetweenretries => 30,
) or die "the other job is still running";
什么在Perl中做到这一点的最好方法是什么?我希望有一个很好的CPAN模块这一点。
解决方案
#!/usr/bin/perl
unless (flock(DATA, LOCK_EX|LOCK_NB)) {
$logger->info("$0 is already running. Exiting.\n" );
exit(1);
} else {
$logger->info("$0 not already running, so starting instance now." );
}
__DATA__
Do not delete this. Used for flock code above
此将锁定在 DATA 强>程序本身的部分。我使用这种技术,它工作得很好。
您可以展开它很容易使重试。
不隶属于 StackOverflow