我们的一名DBA创build了以下crontab条目,每天从上午6:30到午夜每3小时运行一次备份:
30 6-24/3 * * * (path to backup script)
克朗拿了入门,但没有按预期运行备份。 我不是系统pipe理员或Linux专家。 我的分析是,入口应该(从小时候永远不等于24):
30 6-23/3 * * * (path to backup script)
编辑 :系统是Oracle Enterprise Linux 5。
这个脚本只能在2300之前运行一次,我会做更多的testing并回发。 我仍然困惑如何cron接受小时(24)的非法价值。
这很奇怪 如果我创build一个条目,如:
30 6-24/3 * * * /bin/ls
我无法保存crontab。 我收到一个错误,那个小时很糟糕。 如果我创build一个条目,如:
30 6-24/4 * * * /bin/ls
我可以保存input。 它没有任何意义。 时间还是不好,被接受。 这是一个错误还是一个预期的行为?
MadHatter:请随意更改post的标题并提交错误。 正如我所说,我不是一个Linux专家,只是一个同事讨论技术问题的人。 我真的很喜欢这个网站。 贡献者是知识渊博,愿意帮助。
谢谢阿伦
这很明显是一个bug,它似乎影响了许多风格的红帽系统。 我已经确认了你在CentOS 5,C6,Fedora 19和Fedora 20上所描述的行为。
对于表单的crontab条目
30 ab/c * * * /bin/ls
似乎如果不存在a+nc在[24,b]范围内的正整数n,则最后一小时( b )的无效性检查是无效的。 也就是说,只要操作系统实际上不需要做任何事情,就可以写乱码。 如果你指定一个范围和间隔,以便它实际上会在一个无效的小时(其中包括24 )触发一个工作,那么crontab抱怨。
我刚刚说服我的F20系统接受crontab条目
30 6-33/16 * * * /bin/ls
这是疯狂的任何标准。 类似地, 30 2-33/14 * * * /bin/ls和30 1-33/16 * * * /bin/ls都给出了(理想的) bad hour误差,而30 2-27/14 * * * /bin/ls是有效的。
恭喜你,Arun,我认为你已经在Red Hat的crontabfind了一个真正的 bug(它在Ubuntu 12.04LTS上不存在,尽pipe这是我唯一需要testing的其他系统)。 你想用RH bugzillalogin吗?还是我?
将24replace为0 (即24),对于第二次input,最后的工作将运行21:30。
你也可以试试这个:
30 0,6,9,12,15,18,21 * * * /path/to/script
完整的语法:
# cat /etc/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 #