如何在Linux(Debian)中编写这个简单的cronjob?

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

我需要一个文件每小时“运行”一次的次数。 我得到了这个:

crontab -e

没有根的crontab – 使用一个空的

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

crontab:安装新的crontab

这是为了使cronjob运行在凌晨2点(或200小时),每小时运行直到2100小时。 我检查了数据库,看看该文件是否在2:10做了它的事情,没有任何改变,所以显然没有运行。

我对Linux相当陌生,所以可能有办法看看发生了什么,但是我真的很想知道在我进入诊断之前我是否正确地编写了Cronjob指令。

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

你确定你有适当的执行位设置和适当的shebang,以便根可以执行文件/www/file.php吗?

关于这个:

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

你不能把? 那里。 它会考虑? 以及作为文件系统文件名的一部分(其正在寻找/var/www/apache2-default的文件getUserDetails.php?friend=14522828 )。 你可以做的是:

 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的命令。 然后你可以检查根目录的邮件( mail命令)是否存在程序输出或遇到的错误。


另一方面,如果你在你的crontab中是真的有

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

然后我被遗弃了 该条目看起来不错,所以你需要确保你可以在命令行中手动运行文件(在shell中input/www/file.php )。 如果不可执行,则添加执行位。

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