【问题标题】:PHP shell_exec grep not getting all running scripts through cronjobPHP shell_exec grep 没有通过 cronjob 获取所有正在运行的脚本
【发布时间】:2022-02-02 19:57:49
【问题描述】:

我遇到了麻烦,我试图让 cronjob 每 5 分钟运行一次,并且在 php 中我尝试检查我的脚本是否已经在运行,如果是:退出,否则继续运行。 一切都很顺利,直到我让 cron 作业运行脚本,然后它开始每 5 分钟运行一次(* 每次运行时,我在后台运行的脚本很少,而不是仅计划 1 个),但是当我尝试运行时来自浏览器的脚本返回良好并识别所有正在运行的脚本。我尝试记录结果并使用以下代码获取 从 cronjob 运行的脚本

$php_search = "connect.php";
$result = shell_exec("ps aux | grep -v grep |  grep ".$php_search ); 
/* checking result & code for listening connection -- forever running */

仅获取当前正在运行的 cronjob(而不是已在后台运行的另一个)。例如,如果 cron 作业运行此脚本 5 次,即使是第 6 次运行也会返回结果,只是运行脚本本身没有其他结果?

Result:
.....    1  0.0  0.0  20164   244 ?        S    09:40   0:00 jailshell (.....) [init] ell -c /usr/bin/php /home/...../public_html/...../connect.php
.....    2  0.0  0.0 361412 15444 ?        S    09:40   0:00 /opt/cpanel/ea-php56/root/usr/bin/php-cgi /home/...../public_html/...../connect.php

我是在 grep 上做错了什么,还是在我通过浏览器运行脚本时 cronjob 中存在一些限制?

我使用的是专用服务器,所以如果有一些选项我可以更改,我可以做到...

谢谢。

【问题讨论】:

  • 您是否使用您的 http 服务的同一用户运行脚本?
  • 是的,用户是相同的,从浏览器执行的 cronjob 显示相同的用户。

标签: php cron grep


【解决方案1】:

我已经设法让它工作了,它是 root 帐户 (whm) 上的选项,下面的菜单:

Account Functions -> Manage Shell Access

我刚刚将帐户的 shell 访问权限从 Disabled Shell 转为 Normal Shell

现在它可以工作了,grep 获取所有其他正在运行的脚本..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 2015-02-16
    • 2018-04-09
    • 2017-05-16
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多