0

是否有一种可靠的方法可以让 php cli 脚本检测另一个 php cli 脚本是否正在运行?通过在这种情况下运行,我的意思是如果我ps aux | grep scriptname.php在命令行中执行,它将为自己返回一行。

然而,这个命令也倾向于在输出中返回自身,所以我担心如果我只是简单地做一个exec('ps aux | grep scriptname.php',$output);它会返回一个误报。

我正在检测的脚本也会生成日志条目,但在某些情况下它会休眠长达 5 分钟,因此在这种情况下检测其日志条目似乎是一种粗略的检测方法。

4

2 回答 2

2

这是leftclickben答案的稍微简单的版本。在 scriptname 中包含一个字母[]可以让您不必过滤掉grep.

exec('ps aux | grep "[s]criptname.php"', $output);
于 2013-04-30T08:59:16.310 回答
1

您可以使用grep -v grep过滤掉“在输出中返回自身”部分。也就是说,它只会找到命令scriptname.php中没有grep的地方:

exec('ps aux | grep scriptname.php | grep -v grep', $output);
于 2013-04-30T08:44:26.333 回答