如何检查 cron 作业是否正在运行?

如何检查 cron 作业是否正在运行?

我添加了以下命令crontab -e

15 * * * * php /home/rizwan/PHP-workspace/mgstore/testcron.php

我需要testcron.php每 15 分钟运行一次;出于测试目的,我使用了以下 PHP 代码testcron.php

<?php 
echo "test";

答案1

15 * * * * /usr/bin/php /home/rizwan/PHP-workspace/mgstore/testcron.php >> /home/rizwan/cron.out 

这是有效的。但是我有一个 php 脚本,用于将客户从 magento 添加到 ERP,当我手动运行脚本时,它会要求授权,接受授权后,它会从 magento 将客户创建到 ERP 中,我需要每当我​​在 magento 中添加客户后 5 或 10 分钟,这个脚本就应该运行并将客户添加到 ERP。如何做到这一点?如果有人有任何想法,请帮忙?

答案2

首先,您必须确保通过完整路径运行可执行文件。您可以使用which命令获取路径

$ which php
/usr/bin/php

现在 crontab 中的条目必须是:

15 * * * * /usr/bin/php /home/rizwan/PHP-workspace/mgstore/testcron.php

现在要检查输出,您可以使用重定向技巧,因此将输出重定向到某个文件,然后您可以检查该文件以查看结果。因此条目将是:

15 * * * * /usr/bin/php /home/rizwan/PHP-workspace/mgstore/testcron.php >> /home/rizwan/cron.out

现在您可以检查主目录中名为的文件cron.out并查看您的 cron 是否运行。

答案3

在 PHP 中,您可以使用反引号运算符或shell_exec()函数在系统的默认 shell 中运行命令;您可以运行pgrep 'php /home/rizwan/PHP-workspace/mgstore/testcron.php'并评估其返回代码;要么这样:

<?php
    if(!($PID = `pgrep 'php /home/rizwan/PHP-workspace/mgstore/testcron.php'`))
        echo 'Process is running with PID ' . $PID . '.';
?>

或这个:

<?php
    if(!($PID = shell_exec("pgrep 'php /home/rizwan/PHP-workspace/mgstore/testcron.php'")))
        echo 'Process is running with PID ' . $PID . '.';
?>

相关内容