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