您的位置:首页 > 运维架构 > Linux

在看一个经典教材写的crontab时遇到的点小问题

2009-10-14 15:50 253 查看
为了能够在特定的时间运行作业,需要了解c r o n t a b文件每个条目中各个域的意义和格式。
下面就是这些域:
第1列分钟1~5 9
第2列小时1~2 3(0表示子夜)
第3列日1~3 1
第4列月1~1 2
第5列星期0~6(0表示星期天)
第6列要运行的命令
下面是c r o n t a b的格式:
分< >时< >日< >月< >星期< >要运行的命令
其中< >表示空格。
C r o n t a b文件的一个条目是从左边读起的,第一列是分,最后一列是要运行的命令,它位于星期的后面。在这些域中,可以用横杠-来表示一个时间范围,例如你希望星期一至星期五运行某个作业,那么可以在星期域使用1 - 5来表示。还可以在这些域中使用逗号“,”,例如你希望星期一和星期四运行某个作业,只需要使用1 , 4来表示。可以用星号*来表示连续的时间段。如果你对某个表示时间的域没有特别的限定,也应该在该域填入*。该文件的每一个条目必须含有5个时间域,而且每个域之间要用空格分隔。该文件中所有的注释行要在行首用#来表示。

下面我在贴张图,是几个例子,都是比较基础的,高手就可以飘过了。。。



在看contrab的命令和用法,偶尔看到一个任务,把我糊弄了好久,接着发到群里问了下大家,群里还真有好多好人和高手,就这条任务给了好多建议,下面我把截图给贴上来,给大家看下:


上面这个写法引起了大家的观点,对小时的这个写法提出了观点,18-06,我在RHEL5.3下面实验了下,是错误的,有人建议改成06-18,这样是可以的,但是又和原来的意思有变化了,于是有人建议改为18-23,0-06,经过试验,这样是可以的,对于第一个分钟的写法有人给了建议写成 */15,这个写法比较简单,经过试验是可以的,经过大家的讨论后,任务代码可以写出如下:
*/15 18-23,0-06 * * * /bin/echo 'date' > /dev/console

呵呵,一个问题和大家讨论之后,可以学到更多的知识。。。。
关于上面的原文的任务中的写法,可能是当时作者的系统中是可以运行的,而我现在的运行环境和作者当时的不一样,所以会出现书中的代码不能运行这样的事情发生,希望大家在看书时对于每个知识点都实践下,遇到疑问和别人商量下,也许会有意外的收获。。。
文章的附件是我从网上下的资料,先上传,相信大家可能都有,这个是很经典的教材,传上来,没有的朋友,可以看下。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux 职场 crontab 休闲