linux – cron job偶尔也不会运行

我有一个安装了以下软件包的CentOS 6.6服务器:
crontabs-1.10-33.el6.noarch
cronie-1.4.4-12.el6.x86_64
cronie-anacron-1.4.4-12.el6.x86_64
kernel-2.6.32-504.3.3.el6.x86_64

有时,计划每天运行的备份作业之一根本无法运行.甚至根据/var/log/cron.log调用该脚本.
有趣的是,计划在同一时间运行的其他工作没有任何问题.

我无法重现问题,也没有发现任何图案.如果我什么都不做,那么第二天的工作就会按预期正确运行.

crond只是忽略了应该在特定时间运行的多个作业中的一个.这只是偶尔发生的.

我在其他几个地方读过人们谈论在crontab文件的末尾添加一个空行.偶尔无法运行的作业确实位于我的crontab文件的最后一行.
我找不到任何确认这是一个真实或已知的错误.

# tail -2 /var/spool/cron/postgres
*  * * * * OTHERJOB
0 21 * * * /pg_backup.sh

这就是我在/var/log/cron.log中的全部内容

Mar 31 21:00:02 SERVERNAME [cron.info] CROND[19394]: (root) CMD (OTHERJOB)
Mar 31 21:00:02 SERVERNAME [cron.info] CROND[19418]: (postgres) CMD (/pg_backup.sh)
Mar 31 21:01:02 SERVERNAME [cron.info] CROND[20062]: (root) CMD (OTHERJOB)

Apr  1 21:00:02 SERVERNAME [cron.info] CROND[31349]: (root) CMD (OTHERJOB)
Apr  1 21:01:01 SERVERNAME [cron.info] CROND[32080]: (root) CMD (OTHERJOB)

看看OTHERJOB在4月1日如何运行,pg_backup.sh甚至没有被执行.

我已经尝试重启crond但这种情况一直在发生.这会影响具有相同版本的OS,内核和cron RPM的多个服务器.

一个较新版本的cronie(1.4.12),但升级它不是一个选项,因为我们已经使用Centos 6.6的最新版本

我经历了所有cronie版本的更新日志(1.4.4),似乎没有解决这个特殊问题.还检查了all commit messages.

解决方法

原始的cron要求每个条目以换行符结束,所以有时你需要一个空行或者最后的东西.
Although cron requires that each entry in a crontab end  in  a  newline
   character,neither the crontab command nor the cron daemon will detect
   this error. Instead,the crontab will appear to load normally. However,the  command  will  never  run.  The best choice is to ensure that your
   crontab has a blank line at the end.

   4th Berkeley distribution      29 December 1993               CRONTAB(1)

有些版本修复它或发出警告,例如Ubuntu Maverik(10.10):crontab查看底部的诊断部分,该部分声明警告将写入syslog.

DIAGNOSTICS
       cron requires that each entry in a crontab end in a newline  character.
       If  the last entry in a crontab is missing a newline (ie,terminated by
       EOF),cron will consider the crontab (at  least  partially)  broken.  A
       warning will be written to syslog.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...