一.作用
crontab命令可以修改每个用户的crontab文件,crontab文件主要是被cron守护进程所使用,用于指定时间周期执行指定命令。
二.命令参数
-u 指定修改哪个用户的crontab文件。
-l 显示当前的crontab文件内容
-r 上次当前的crontab文件
-i 和-r一起使用,表示在删除crontab文件之前进行确认
-e 修改crontab文件,在修改之后,crontab文件就会被cron守护进程使用
三.crontab文件的格式
crontab文件的每一行的格式如下:
m h dom mon dow command
1.前面五个部分
前面五个部分的含义和取值如下:
m表示minute,取值为0-59
h表示hour,取值为0-23
dom表示day of month, 取值为1-31
mon表示month,取值为1-12,
dow表示day of week,取值为0-7(0或者7表示周日)
对于这个五个部分,都可以用"*"来表示所有的取值。
可以通过枚举的方式指定某些值,通过","来隔开不同的值,例如"1,3,4",表示该部分的值选择1,3和4。
可以指定范围,例如"1-3",表示这个部分的值为1,2,3。
可以通过"/number"来指定这个部分的步长,例如"0-7/2"表示在0-7之间,每两个数值才执行一次,也就是0,2,4,6才会执行命令,步长也可以和"*"一起使用,表示全区间的步长执行,例如"*/2"表示取值范围每2个数执行一次。
由于日期可以在dom和dow两个部分指定,如果两个部分都被指定(例如,不包含"*"),那么,命令会在满足其中任一条件时执行,例如"30 4 1,15 * 5"会让命令在每个月1号和15,以及每个周五执行。
对于前面的五个部分,还有一些简单的拓展,就是使用一些别名来指定一些常用的时间设定,哲别别名都是以"@"开头,具体的别名和对应的含义如下
@reboot : 重启后运行一次
@yearly : 一年执行一次,例如:"0 0 1 1 *"
@annually : 一年执行一次,例如:"0 0 1 1 *"
@monthly : 一个月执行一次,例如:"0 0 1 * *"
@weekly: 一周执行一次,例如:"0 0 * * 0"
@daily: 一天执行一次,例如:"0 0 * * *"
@hourly: 一个小时执行一次,例如:"0 * * * *"
2.command
对于command部分,除了前面五个部分,那一行剩余的部分都会被认为属于command部分,一直到遇到换行符或者"%"。如果"%"没有进行转义,也就是写成"\%"的话,"%"前面的部分会作为command,而"%"后面部分会做为command的参数传递给command。
对于command部分,如果是自定义的脚本,最好是指定绝地路径,包括脚本中使用的文件,最好也是用绝对路径。
四.例子
假设要指定的命令为/home/sheng/code/shell/test_crontab.sh
1.每分钟执行
* * * * * /home/sheng/code/shell/test_crontab.sh
2.每30秒执行
* * * * * /home/sheng/code/shell/test_crontab.sh;sleep 30; /home/sheng/code/shell/test_crontab.sh;sleep
3.每10分钟执行
*/10 * * * * /home/sheng/code/shell/test_crontab.sh
五.参考链接
1.https://help.ubuntu.com/community/CronHowto
2.http://man7.org/linux/man-pages/man1/crontab.1.html
3.http://man7.org/linux/man-pages/man5/crontab.5.html
领取专属 10元无门槛券
私享最新 技术干货