这是我能想到的:
>使用pgrep查找进程。>让脚本使用flock锁定自身,然后检查每次运行时是否被锁定。>在/var/run/program_name.pid中创建一个pid文件并检查是否存在,如果需要,比较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文件的一个优点是文件在程序退出时自动解锁。以可靠的方式实施起来容易得多。