本文是《Linux 入门指南》的第十七篇文章,以 Ubuntu 21.10 为例,介绍了 Linux 计划任务。
crontab(自动执行指定任务)
描述:
"cron table(作业列表)" 的缩写,自动执行指定任务,类似于 Windows 的计划任务。
用法:
crontab [-u 用户名] [文件名]
crontab [ -u 用户名 ] [ -i ] { -e | -l | -r }
选项:
| 选项 | 意义 |
|---|---|
| -e | 编辑(当前用户的)任务 |
| -l | 列出(当前用户的)任务 |
| -r | 删除(当前用户的)任务 |
| -i | 在删除(当前用户的)任务前提示 |
实例:
导入 cron 文件(自动创建一个任务)
crontab push.cron
列出(当前用户的)任务
crontab -l
编辑(当前用户的)任务(建议使用 nano 编辑器)
crontab -e
删除(当前用户的)任务
crontab -r
cron 表达式
描述:
cron 表达式由 时间 和 指令 两部分组成。
时间是一个 5-7 位的字符串,Linux 只有 5 位(分钟、小时、日期、月份、星期)。而 Java(Spring) 和 Java(Quartz) 不一样,这里不作介绍。
#分钟 小时 日期 月份 星期 指令
* * * * * ls -l
| 字段 | 取值范围 |
|---|---|
| 分钟(Minutes) | 0~59的整数 |
| 小时(Hours) | 0~23的整数 |
| 日期(DayofMonth) | 1~31的整数(需要考虑当月的天数) |
| 月份(Month) | 1~12的整数或者 JAN-DEC |
| 星期(DayofWeek) | 1~7的整数或者 SUN-SAT (星期天是 1,以此类推) |
| 操作符 | 描述 |
|---|---|
| * | 通配符,在分钟中使用,表示每分钟 |
| - | 范围,在小时中使用,比如说 9-18,表示上午9点到下午6点 |
| / | 间隔,在日期中使用,比如说 */2,表示每隔2天 |
| , | 枚举值,在分钟中使用,比如说 3,6,9,表示每小时中的第 3,6,9分钟 |
指令是需要执行的任务,可以是任意 Linux 命令,这里不作介绍。
实例:
每分钟执行一次
* * * * * ls -l
每小时的第 3、6、9分钟执行一次
3,6,9 * * * * ls -l
上午9点到下午6点的每小时的第 3、6、9分钟执行一次
3,6,9 9-18 * * * ls -l
每隔2天的上午9点到下午6点的每小时的第 3、6、9分钟执行一次
3,6,9 9-18 */2 * * ls -l
每天0点0分执行一次
0 0 * * * ls -l
注意事项:
当你修改了任务之后,建议重新启动 crontab,从而让修改生效。
# 停止 crontab
systemctl stop cron
/etc/init.d/cron stop
# 启动 crontab
systemctl start cron
/etc/init.d/cron start
# 重新启动 crontab
systemctl restart cron
/etc/init.d/cron restart
# 查看 crontab 状态
systemctl status cron
/etc/init.d/cron status
# 设置 crontab 开机启动
systemctl enable cron
# 禁止 crontab 开机启动
systemctl disable cron