ps ax | grep -i 'php complete.php'
<?php
exec("ps ax | grep -i 'php complete.php'", $pids);
if(!empty($pids)) {
die("already running");
}
我去检查我的ps斧,但是没有看到complete.php,我去检查一个文件夹,如果complete.php正在运行,它将输出一些内容,但没有输出。
它给了我一个误报。如何检查脚本complete.php当前是否正在运行。
原因是因为我希望它同步运行而且我有一个无限循环执行complete.php每2分钟就像一个cron工作。
答案 0 :(得分:0)
你只会看到php进程正在运行。我看到运行php进程的方法是对php二进制文件进行别名并使用它运行它。
ln -s / usr / bin / php longrunningphp
longrunningphp / path / to / your / script
然后用ps ax |检查grep longrunningphp
答案 1 :(得分:0)
I had the same problem.在控制台中运行时,您将获得结果,但是当在PHP中使用相同的命令时,不会返回任何内容。问题出在PHP允许的终端宽度的某处。简单的解决方案就是增加它。例如:
exec("export COLUMNS=1000; ps ax | grep -i 'php complete.php'", $pids);
COLUMNS
Used by the select command to determine the terminal width when printing
selection lists. Automatically set upon receipt of a SIGWINCH.