使用PHP检查Python工作是否正在运行。

3
我有一个Python脚本,通过CRON工作两次,触发一个循环运行的警报,当按下物理按钮并调用销毁函数时,警报停止。
到目前为止还不错。现在,我想通过PHP检查该脚本是否正在运行 - 在按下按钮之前但在通过CRON调用之后。我该怎么做?
基于这个问题 - 我尝试了以下方法:
exec("jobs", $pids);
if(!empty($pids)) {
    print_r($pids);
}

但它似乎没有返回任何值。在终端中调用jobs的效果如预期一样,而直接使用python3 alarm.py &调用脚本时,它会将作业列为正在运行。
使用exec("ps -A | grep -i $processName | grep -v grep", $pids);我感觉不起作用,因为进程ID可能会更改,并且在脚本运行之前无法知道。
1个回答

3

可以使用 pgrep 实现:

pgrep -f 'python scriptname.py ...'

-f 可以用来指定 Python 进程的完整命令行,以避免与同时运行的多个 Python 进程发生冲突。


谢谢!当我使用PHP的exec函数调用它时,我没有得到任何结果。将pgrep -f python /home/pi/Projects/sound.py直接粘贴到终端中,我会得到以下错误:“pgrep:只能提供一个模式”。在终端中键入pgrep -f python会正确返回脚本的PID,但由于在运行脚本之前未知PID,所以我有点不知所措... - Michał
需要引用路径。抱歉,我更新了我的回答。 - hek2mgl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接