crontab命令学习

一.作用

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181105G0Z7R100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券