§1 简介
任务调度:
使系统在某个时间点自动执行特定的程序或脚本
程序/脚本可能是:
- 系统任务,如病毒扫描
- 用户任务,如数据库备份,数据拉取
§2 crontab [工作表操作指令]
全称:chronos table 时间表,作业列表
说明:
此指令操作 /var/spool/cron/用户名 文件,任务调度的相关文件/目录如下:
- /var/spool/cron/用户名 存放用户名的任务,每个用户均可通过 crontab 指令操作
- /etc/crontab 只有root用户可以操作
- /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本,还可以把任务细分至
- /etc/cron.hourly 每小时任务
- /etc/cron.daily 每日任务
- /etc/cron.weekly 每周任务
- /etc/cron.monthly 每月任务
指令:crontab [-u 用户名] 操作标记
说明:
- -u 用户名可以省略,此时默认当前用户
- 操作标记
- -e:edit, 进入当前时间表并编辑(默认 VI),通过cron表达式+任务添加任务
- -l:list,列出当前时间表
- -r:remove,删除当前时间表
§3 cron 表达式
cron 表达式有5个标记位,依次是:
- 分钟,0-59
- 小时,0-23
- 日,1-31
- 月,1-12
- 星期,0-6,0 表示星期日
每一位可以使用下列元字符:
- * 表示当前位所有允许的值,如 * * * * * 表示每分钟都执行任务
- - 表示范围内,如 0-9 * * * * 表示每小时的前 10 分钟执行任务
- , 表示散列枚举,如 0,30 * * * * 表示每小时的 0 分和 30 分执行任务
- / 表示间隔,如 */5 * * * * 表示马上执行任务,随后每 5 分钟执行一次
区别:
Linux 中 crontab 的 cron 表达式功能较弱,不支持秒和年,以及对元字符 ?#LW 的支持
详情参考 cron表达式详解
当使用 6/7 位版的 cron 表达式时,系统提示如下图:
常用 cron 表达式:
cron 表达式 | 释义 |
---|---|
* * * * * | 每分钟一次 |
0,30 * * * * | 每小时0分,30分执行 |
3,15 8-11 * * * | 8点到11点的第3和第15分钟执行 |
3,15 8-11 */2 * * | 每两天,8点到11点的第3和第15分钟执行 |
0 8-11 * * 0 | 每周日,8-11点整执行 |
0 */1 * * * | 每小时执行 |
0 23-7/1 * * * | 晚23点到早7点整,每小时执行 |
crontab 示例
§4 重启调度
指令:service crond restart
上述内容参考下面链接部分内容
Linux Crontab 定时任务