本文是《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