有几种方法可以做到这一点,但我不确定哪一种是最好的.
这是我能想到的:
使用pgrep查找进程.
让脚本使用flock锁定自己,然后在每次运行时检查它是否被锁定.
在/var/run/program_name.pid中创建一个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文件相比的一个优点是文件在程序退出时自动解锁.以可靠的方式实施起来要容易得多.
做旧的PID文件技巧.
开始过程
看看是否有一个名为"myprog.PID"的文件
检查是否存在正在运行的proc.使用kill 0,$ pid匹配PID
如果编程PID proc的名称.比赛,大声抱怨并退出
如果没有,清理陈旧的"myprog.PID"
创建一个名为"myprog.PID"的文件,然后继续
HTH
干杯,
抢