之前在百度实习的时候搞过一回crontab,不过也是边查边用,过后就忘了,今天帮实验室搞一个流量监控系统,再次遇到crontab,决定这次做下笔记,防止下次再用到时忘掉。
首先,crontab分为两类:系统crontab,用户crontab。
按照我的理解,系统crontab可以使不同的用户crontab任务都放到/etc/crontab文件中指定。而用户crontab仅允许当前用户调用crontab -e命令来编辑自己的任务。
下面讲解crontab具体使用以及语法。
首先,crontab分为两类:系统crontab,用户crontab。
按照我的理解,系统crontab可以使不同的用户crontab任务都放到/etc/crontab文件中指定。而用户crontab仅允许当前用户调用crontab -e命令来编辑自己的任务。
下面讲解crontab具体使用以及语法。
crontab -e添加的命令必须如下面的格式:
* * * * * command
其中前五个字段的含义依次是:
分钟:0-59
小时:0-23
日期:1-31
月份:1-12
星期:0-6(0代表周日)
不过可以采用一些类似正则表达式里的特殊符号来表示:“*”表示任意,“,”表示分隔,“-”表示时间段,如1-5,“/n”表示每隔n个单位执行一次,如*/3及表示每3个小时执行一次。
如下面的一些例子:
3 8-23/3 * * * 代表8:03、11:03、14:03、17:03、20:03、23:03各执行一次命令
其实crontab主要内容就是这么简单,一般的任务都可以用这些知识来搞定
这里补充一个,因为crontab运行任务并不知道任务执行成功不成功,因此最好对执行的任务加上log,如下面的命令:
* * * * * command
其中前五个字段的含义依次是:
分钟:0-59
小时:0-23
日期:1-31
月份:1-12
星期:0-6(0代表周日)
不过可以采用一些类似正则表达式里的特殊符号来表示:“*”表示任意,“,”表示分隔,“-”表示时间段,如1-5,“/n”表示每隔n个单位执行一次,如*/3及表示每3个小时执行一次。
如下面的一些例子:
3 8-23/3 * * * 代表8:03、11:03、14:03、17:03、20:03、23:03各执行一次命令
其实crontab主要内容就是这么简单,一般的任务都可以用这些知识来搞定
这里补充一个,因为crontab运行任务并不知道任务执行成功不成功,因此最好对执行的任务加上log,如下面的命令:
10 0 * * * cd /home/myjfm/output/ && /bin/bash crntb_start.sh >> /home/myjfm/output/crontab.log 2>&1
代表将crontab执行任务的日志输出到/home/myjfm/output/crontab.log文件中,这样,如果crontab执行不成功,则可以通过查看crontab.log文件来排错,非常实用。
代表将crontab执行任务的日志输出到/home/myjfm/output/crontab.log文件中,这样,如果crontab执行不成功,则可以通过查看crontab.log文件来排错,非常实用。