0

我最近在使用 crontab 时遇到了一些问题。切换服务器后,我意识到我的 cronjobs 都没有运行。查看 PHP 信息后,我意识到 php 是用 CGI 运行的,所以我意识到我必须切换lynx -dump URL_HEREphp -q PATH_HERE.

在实际的 PHP 文件中,我盯着它,想#!/usr/bin/php -q定义 php 在我的服务器上的位置。但是,它没有运行。我什至设置了 crontab,以便在任何运行时向我发送电子邮件。没有电子邮件。我检查了我的垃圾邮件、垃圾邮件、垃圾邮件,甚至尝试过切换电子邮件。没有。

这就是我现在所拥有的:* * * * * php -q /home/USER/public_html/file.php

如果我将它复制并粘贴到命令行中,它会非常好用。如果我通过 crontab 运行它,它不会运行。

4

2 回答 2

0

您可以做几件事来调试它。

1)在您的 crontab 中将您的条目更改为:

* * * * * php -q /home/USER/public_html/file.php > /tmp/filecron 2>&1

确保通过键入以下内容来编辑条目:

crontab -e

然后运行:

tail -f /tmp/filecron

在运行时调试输出。

2) 作为 sudo 用户或 root,跟踪 cron 日志以确保您的 cron 正确执行:

sudo tail -f /var/log/cron

第一步将为您提供与 php 文件本身相关的信息(语法错误等),如果这是失败的原因。如果 crontab 本身配置不正确,第二步将帮助您。

您打算让这项工作每 5 分钟运行一次,对吗?这就是它将对您声明的行执行的操作。

于 2013-03-03T18:45:27.160 回答
0

您缺少环境变量。尝试像这样的简单测试

将此添加到您的 crontab

* * * * *  set > /tmp/vars

等待 2 -3 分钟,返回并删除您刚刚创建的 crontab 条目。

下一个,

从您通常使用的 shell 命令行

set > myvars
diff myvars /tmp/vars

这将向您展示环境的差异。修改您的 cron 作业环境。只需添加需要的内容。

于 2013-03-03T18:48:06.697 回答