【发布时间】: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 显示相同的用户。