有几种方法可以做到这一点,但我不确定哪一种方法最好。
这是我能想到的:
可能有更多方法可以做到这一点。你认为最好的方法是什么?
答案 0 :(得分:37)
有很多方法可以做到这一点。 PID文件是传统的方法。您也可以对文件进行锁定,例如程序本身。这段小代码可以解决问题:
use Fcntl ':flock';
open my $self, '<', $0 or die "Couldn't open self: $!";
flock $self, LOCK_EX | LOCK_NB or die "This script is already running";
与PID文件相比,一个优点是文件在程序退出时自动解锁。以可靠的方式实施起来要容易得多。
答案 1 :(得分:10)
执行旧的PID文件技巧。
HTH
欢呼声,
罗布
答案 2 :(得分:2)
您列出的所有选项都很好。但有一点需要注意的是,在极少数情况下,你最终会遇到一个运行很长时间的过程(即等待某些东西)。您可能需要考虑关注其他正在运行的实例运行了多长时间,如果超过一定时间(例如某天),可能会发送警报。