【问题标题】:Cron on CentOS not properly executing a php scriptCentOS 上的 Cron 未正确执行 php 脚本
【发布时间】:2014-09-03 10:09:08
【问题描述】:

我有 php 脚本,我正在尝试使用 cron 定期执行。

我通过修改 crontab 文件来做到这一点。

crontab 内容:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
*/10 * * * * root /usr/bin/php /var/www/html/cron_update_statuses_one_hour.php
0 */03 * * * root /usr/bin/php /var/www/html/cron_update_statuses_three_hour.php
0 */08 * * * root /usr/bin/php /var/www/html/cron_update_statuses_eight_hour.php
0 */16 * * * root /usr/bin/php /var/www/html/cron_update_statuses_sixteen_hour.php
0 0 * * * root /usr/bin/php /var/www/html/cron_update_statuses_one_day.php

cron 日志:

Jul 13 00:10:01 s1 CROND[2944]: (root) CMD (cd /var/www/html/ /usr/bin/php             cron_update_statuses_one_hour.php)
Jul 13 00:12:01 s1 crond[2124]: (*system*) RELOAD (/etc/crontab)
Jul 13 01:00:01 s1 CROND[2977]: (root) CMD (/usr/sbin/raid-check)
Jul 13 01:01:01 s1 CROND[2992]: (root) CMD (run-parts /etc/cron.hourly)
Jul 13 01:01:01 s1 run-parts(/etc/cron.hourly)[2992]: starting 0anacron
Jul 13 01:01:01 s1 anacron[3001]: Anacron started on 2014-07-13
Jul 13 01:01:01 s1 run-parts(/etc/cron.hourly)[3003]: finished 0anacron
Jul 13 01:01:01 s1 anacron[3001]: Jobs will be executed sequentially
Jul 13 01:01:01 s1 anacron[3001]: Normal exit (0 jobs run)
Jul 13 01:07:01 s1 crond[2124]: (*system*) RELOAD (/etc/crontab)
Jul 13 01:10:01 s1 CROND[3022]: (root) CMD (/usr/bin/php     /var/www/html/cron_update_statuses_one_hour.php)
Jul 13 02:01:01 s1 CROND[3059]: (root) CMD (run-parts /etc/cron.hourly)
Jul 13 02:01:01 s1 run-parts(/etc/cron.hourly)[3059]: starting 0anacron
Jul 13 02:01:01 s1 anacron[3068]: Anacron started on 2014-07-13
Jul 13 02:01:01 s1 anacron[3068]: Jobs will be executed sequentially
Jul 13 02:01:01 s1 anacron[3068]: Normal exit (0 jobs run)
Jul 13 02:01:01 s1 run-parts(/etc/cron.hourly)[3070]: finished 0anacron
Jul 13 02:10:01 s1 CROND[3072]: (root) CMD (/usr/bin/php /var/www/html/cron_update_statuses_one_hour.php)

100% 确定 php 位置正确; 100% 确定 cron 服务正在运行; 100% 确定我的脚本位置正确

另外,是的,我意识到我的第一个条目设置为每 10 分钟运行一次该命令,我这样做只是为了调试目的,请假装它设置为每小时运行一次

请帮助 *nix 专家 Big Grin | :-D!

谢谢

【问题讨论】:

  • 通常首先要检查 cron 问题是所有环境变量。 crond 不会以用户身份登录,因此 .profile 等可能尚未执行。从命令行执行 set >/tmp/set.1。运行命令 set > /tmp/set.2 作为 cron 作业。比较两个文件

标签: php linux unix cron centos


【解决方案1】:

我不知道你的 PHP 脚本应该做什么,所以我只能假设你已经对它们是否正常工作进行了适当的检查。

您是否尝试过直接从命令行运行脚本?

$ php /var/www/html/cron_update_statuses_one_hour.php

尝试将 /var/www/html 添加到您的 PATH。

还要检查 PHP 日志,看看那里是否显示任何错误。

【讨论】:

  • 谢谢 - 这只是 cron 命令的语法错误
猜你喜欢
  • 2012-02-07
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 2018-02-14
  • 2020-10-24
  • 2013-02-26
  • 1970-01-01
  • 2021-06-22
相关资源
最近更新 更多