有没有一种可靠的方法可以让php cli脚本检测到另一个php cli脚本是否正在运行?通过在这种情况下运行,我的意思是如果我在命令行中ps aux | grep scriptname.php
,它将为自己返回一行。
这个命令也倾向于在输出中返回自己,所以我担心如果我只是做exec('ps aux | grep scriptname.php',$output);
它会返回误报。
我正在检测的脚本也会生成日志条目,但在某些情况下它会睡眠最多5分钟,因此在这种情况下检测其日志条目似乎是一种粗略的检测方法。
答案 0 :(得分:2)
这是一个稍微简单的版本的leftclickben的答案。使用[]
在脚本名中包含一个字母可以使您免于过滤掉grep
。
exec('ps aux | grep "[s]criptname.php"', $output);
答案 1 :(得分:1)
您可以使用grep -v grep
过滤掉“在输出中返回”部分。也就是说,它只会找到命令中没有scriptname.php
的{{1}}:
grep