crontab -e

crontab -e

我需要帮助让 cronjob 在 Linux(Debian)中正常运行。(这是我的第一个)。

我需要一个文件每小时“运行”一次,并设置次数。我做到了这一点:

crontab -e

root 没有 crontab - 使用一个空的

编辑 crontab 文件:0 2-21 * * * /www/file.php

crontab:安装新的 crontab

这是为了让 cronjob 从凌晨 2 点(或 200 点)开始运行,并每小时运行一次,直到 2100 点。我检查了数据库,看看文件是否在 2:10 执行了它的任务,但没有任何变化,所以它显然没有运行。

我对 Linux 还很陌生,所以可能有办法了解发生了什么,但我真的很想知道在开始诊断之前我是否正确编写了 Cronjob 指令。

答案1

你的 crontab 对我来说看上去完全没问题。

你确定你已经设置了适当的执行位和正确的舍邦以便root可以执行文件/www/file.php?

答案2

关于这一点:

42 3-22 * * * /var/www/apache2-default/getUserDetails.php?friend=14522828

您不能将 放在?那里。它会将?以及其后的其余部分视为文件系统中文件名的一部分(它正在查找getUserDetails.php?friend=14522828处的文件/var/www/apache2-default)。您可以做的是:

42 3-22 * * * /usr/bin/php-cgi /var/www/apache2-default/getUserDetails.php friend=14522828

(假设 php-cgi 可执行文件位于 /usr/bin,如果 php 安装在其他地方,请进行相应更改)

或者,您可以编辑 getUserDetails.php 并在文件最顶部添加以下行:

#!/usr/bin/php-cgi
<?php
[your code goes here]
...

然后确保 getUserDetails.php 可由 root 执行(通过 ls -l 检查,通过 chmod 分配),然后在 cron 中制定以下计划:

42 3-22 * * * /var/www/apache2-default/getUserDetails.php friend=14522828

之后,您可以监视 /var/log/cron 以查看 crond 正在运行的命令。然后您可以检查 root 的邮件(mail命令)以查看程序输出或遇到的错误。


另一方面,如果你的 crontab 中实际有的是

0 2-21 * * * /www/file.php

然后我就被难住了。条目看起来不错,所以你需要确保你可以在命令行中手动运行该文件(/www/file.php在 shell 中输入)。如果不可执行,请为其添加执行位。

之后,检查 /var/log/cron 以及 root 的邮件,查找正在执行的命令和错误。

相关内容