crontab定时任务详解

定时任务

/etc/crontab 文件中的每一行都代表一项任务,它的格式是:

minute  hour  day  month  dayofweek  command

minute    — 分钟,从 0 到 59 之间的任何整数

hour     — 小时,从 0 到 23 之间的任何整数

day     — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)

month    — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)

dayofweek — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)

command — 要执行的命令(命令可以是 ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。)

 

在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。

整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。

用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。

正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。

开头为井号(#)的行是注释,不会被处理

 

当我们要增加全局性的计划任务时,一种方式是直接修改/etc/crontab。但是,一般不建议这样做,/etc/cron.d目录就是为了解决这种问题而创建的。

例如,增加一项定时的备份任务,我们可以这样处理:在/etc/cron.d目录下新建文件backup.sh,内容如下:

    # m h dom mon dow user command

    * 1 * * * root /sbin/mon_zetc_logtar.sh

cron进程执行时,就会自动扫描该目录下的所有文件,按照文件中的时间设定执行后面的命令。

 

cron执行时,也就是要读取三个地方的配置文件:

一是/etc/crontab,这个文件中有用户名字段;

二是/etc/cron.d目录下的所有文件;

三是每个用户的配置文件;用命令crontab -l –u root

 crontab [-u username]    //省略用户表表示操作当前用户的crontab

    -e      (编辑工作表)

    -l      (列出工作表里的命令)

    -r      (删除工作作)

posted @ 2023-04-28 15:20  少年阿丁  阅读(163)  评论(0编辑  收藏  举报