首页 > 代码库 > crontab 例行任务

crontab 例行任务

1、crontab 介绍

  crontab是Linux用来定时执行任务的命令。

2、命令格式

  crontab [-u user] file

  crontab [-u user] [-i] {-e | -l | -r }

    -e:编辑用户的 crontab 文件(针对用户)

    -l:列出用户的 crontab 文件

    -r:删除用户的 crontab 文件

    -i:删除用户的 crontab 文件前给出提示

    -u:设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数。如,root 用户要删除用户 charles 的 cron 设置:crontab -u charles -r

 

  每个用户使用 crontab 命令创建工作调度之后,该项工作会被记录在 /varspool/cron/ 目录下,如用户 charles 使用 crontab 之后,他的工作会被记录到 /var/spool/cron/charles 中去。

 

 【注意

  • crontab -r 会删除crontab中所有的任务,如果只想删除一项任务的话,使用crontab -e 去编辑。
  • 周与日、月不可同时并存,不能指定“几月几日且星期几”的模式。

3、基本格式

minute hour day of month month day of week command
0 ~ 59 0 ~ 23 1 ~ 31 1 ~ 12 0 ~ 7 要执行的命令
  • 周的数字为 0 或 7 时,都代表“周日”的意思。
  • *(星号) 代表所有可用值。
  • ,(逗号) 用来分隔时段,如:1,3,4,6表示这四个指定的整数。
  • -(减号) 代表一段时间范围,如:8-12表示8,9,10,11,12.
  • /(斜线) 指定间隔值,(minute位置)*/5 表示每隔5分钟的意思。
  • 以“#”开头为注释行,不会被执行。 

4、系统性的例行任务

  针对系统性的例行任务,编辑 /etc/crontab 即可。cron 服务的最低检测限制是“分钟”,所以 cron 会每分钟去读取 /etc/crontab 文件中的内容。

  文件内容格式:

/etc/crontab 文件内容

minute

hour

dayofmonth

month

dayofweek

user

command

0 ~ 59 0 ~ 23 1 ~ 31 1 ~ 12 0 ~ 7 执行者 要执行的命令

  可以看到 /etc/crontab 中的内容比 crontab -e 不同,多了一个执行者,用户自己的 crontab 并不需要指定执行者,但是系统级的 /etc/crontab 需要指定,系统默认的例行性工作是以 root 身份运行的。

5、特殊用法

关键词 意义 等同于
@reboot 每次重启时执行  
@yearly 每年第一分钟执行 "0 0 1 1 *"
@annually 同 @yearly  
@monthly 每月第一分钟执行 "0 0 1 * *"
@weekly 每周第一分钟执行 "0 0 * * 0"
@daily 每天第一分钟执行 "0 0 * * *"
@midnight 同 @daily  
@hourly 每小时第一分钟执行 "0 * * * *"

6、crontab服务的启动与关闭

  service crond start //启动 cron 服务

  service crond stop //关闭 cron 服务

  service crond restart //重启 cron 服务

  service crond reload //重新载入配

crontab 例行任务