【问题标题】:Check if a Python job is running using PHP检查 Python 作业是否正在使用 PHP 运行
【发布时间】:2017-07-25 17:15:16
【问题描述】:

我有一个 python 脚本,它每天通过 CRON 作业调用两次,以触发循环运行的警报,并通过按下物理按钮并在按下该按钮时调用销毁函数来终止。

到目前为止一切顺利。

现在,我想通过 PHP 检查该脚本是否正在运行 - 所以在按下按钮之前但在通过 CRON 调用它之后。

我该怎么做?

Based on this question - 我尝试了以下方法:

exec("jobs", $pids);
if(!empty($pids)) {
    print_r($pids);
}

但它似乎没有返回任何值。从终端调用jobs 按预期工作,并在直接使用python3 alarm.py & 调用脚本时将作业列为正在运行。

使用exec("ps -A | grep -i $processName | grep -v grep", $pids); 我觉得行不通,因为进程ID可以更改,并且在脚本运行之前无法知道。

【问题讨论】:

    标签: php python raspberry-pi


    【解决方案1】:

    为此使用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 是未知的,所以我有点不知所措...
    • 你需要引用路径。对不起。更新了我的答案
    猜你喜欢
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 2016-03-23
    • 2012-01-23
    相关资源
    最近更新 更多