当前位置: 首页>>技术教程>>正文


验证crontab是否有效

,

问题描述

我想验证某个crontab是否正常工作。我添加了这样的工作:

  */2 * * * * /path_to_my_php_script/info.php >/dev/null 2>&1

我知道我重定向到空设备,但我不确定上面的命令是否良好。

*编辑1:在我的/var /log /syslog中,每两分钟我有以下错误:

 (CRON) error (grandchild #2788 failed with exit status 2)

*编辑2:使用此新作业的日志中没有错误:

 */2 * * * * /usr/bin/php /path_to_my_php_script/info.php >/dev/null 2>&1

最佳解决方法

crontab条目的语法看起来正确。实际上,如果使用“crontab -e”编辑crontab(如您所愿),如果指定语法无效的crontab条目,则会出现错误。

  1. 首先,/path_to_my_php_script/info.php能否从命令行正确运行?

  2. 如果是这样,它是否也像这样正确运行?:

    /bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
    
  3. 如果有效,它会像这样工作吗?

    /bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
    

步骤(3)类似于cron将如何运行您的程序(如“man 5 cron”中所述)。

你遇到的最可能的问题是PATH cron用于运行程序的限制性太强。因此,您可能希望在crontab条目的顶部添加类似以下内容(您需要添加脚本所需的任何目录):

PATH=~/bin:/usr/bin/:/bin

另请注意,cron默认使用/bin/sh,而不是bash。如果需要bash,还要将其添加到crontab文件的开头:

SHELL=/bin/bash

请注意,这些更改都将影响所有crontab条目。如果您只想为info.php程序修改这些值,可以执行以下操作:

*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"

还值得一提的是,在为”mail”配置的系统上(换句话说,系统配置了MTA [sendmail /postfix /etc]),crontab程序的所有输出都会自动通过电子邮件发送给您。默认的Ubuntu桌面系统不会配置本地邮件,但是如果您正在使用服务器,则只需在终端中键入”mail”即可查看所有这些cron邮件。这也适用于“at”命令。

次佳解决方法

虽然非常罕见,但即使服务正在运行,有时cron也会停止正常工作。以下是验证crond正在运行并停止/启动服务的方法。

在Linux上:

service crond status
service crond stop
service crond start

在Ubuntu上:

service cron status
service cron stop
service cron start

第三种解决方法

不要将错误输出重定向到/dev /null和grep /var /log /syslog以用于cron输出。

grep cron /var/log/syslog

在编辑/etc/crontab/etc/cron.d/中的文件后,可以立即显示保存文件时出现的错误:

tail -f /var/log/syslog | grep cron &

如果编辑没问题,你只会看到RELOAD通知,会出现错误

Jul 9 09:39:01 vm cron[1129]: Error: bad day-of-month; while reading /etc/cron.d/new 

第四种方法

您可以使用terminal命令查看活动的cron:

crontab -l

以下是按顺序排列的参数:

  1. 分(0 – 59)

  2. 小时(0-23)

  3. 每月的一天(1 – 31)

  4. 月(1 – 12)

  5. 星期几(0 – 6)(星期日= 0)

  6. 命令

所以,你每小时的第一分钟都在调用你的脚本。您应该更频繁地测试输出以进行测试:

* * * * * <command> #Runs every minute

这将每分钟召唤一次!

第五种方法

对于每一行的时间部分,您可以使用此cron tester来测试/验证您的cron时间定义。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1805.html,未经允许,请勿转载。