输入 Cron 表达式

每隔 5 分钟

取值范围说明
0-59表示在当前小时的第几分钟执行任务
*每分钟都执行
*/N每 N 分钟执行一次(例如,*/5 表示每 5 分钟执行一次)
M1,M2,...指定多个分钟执行(例如,5,10,25 表示在第 5、10 和 25 分钟执行)
M1-M2指定一个范围内的分钟(例如,10-20 表示从第 10 到第 20 分钟执行)

概述

Cron 是 Linux 和类 Unix 系统中的一个定时任务调度程序,用于在特定的时间或周期性地执行命令或脚本。

Cron 的任务称为 "cron jobs",这些任务由一个名为 crontab(Cron Table)的文件管理。crontab 文件中包含了任务调度的规则和要执行的命令。

Crontab 文件的格式

一个标准的 crontab 文件由以下几部分组成:

  1. 分钟(0 - 59)
  2. 小时(0 - 23)
  3. 日期(1 - 31)
  4. 月份(1 - 12)
  5. 星期几(0 - 7,其中0和7都代表星期日)

后面跟着要执行的命令或脚本路径。

crontab 文件中每一行都代表一个定时任务,格式如下:

* * * * * command_to_execute
- - - - -
| | | | |
| | | | +---- 一周中的第几天 (0 - 7) (0 或 7 都代表周日)
| | | +------ 月份 (1 - 12)
| | +-------- 一个月中的第几天 (1 - 31)
| +---------- 小时 (0 - 23)
+------------ 分钟 (0 - 59)

在这五个字段之后就是要执行的命令或脚本。每个字段的含义如下:

  • 分钟(Minute): 0 到 59 之间的整数,表示在这小时内的第几分钟执行任务。
  • 小时(Hour): 0 到 23 之间的整数,表示一天中的第几小时执行任务。
  • 日期(Day of the Month): 1 到 31 之间的整数,表示一个月中的哪一天执行任务。
  • 月份(Month): 1 到 12 之间的整数,表示哪个月执行任务。
  • 星期(Day of the Week): 0 到 7 之间的整数,其中 0 和 7 都表示星期日。

特殊符号

  • *:表示任何可能的值。
  • -:表示一个范围。
  • ,:表示一个列表。
  • /:用于递增的开始时间(如 0-5/15 * * * * 表示从0分钟开始,每15分钟执行一次)。
  • L:表示列表中的最后一个数字(仅用于日期和星期几)。
  • W:表示有效工作日(仅用于日期)。
  • #:表示星期几的一个数字的第几个实例(仅用于星期几)。

Cron 支持一些特殊符号来简化时间设置:

  • 0 0 * * *:每天午夜(00:00)执行任务。
  • */15 * * * *:每 15 分钟执行一次任务。
  • 0 8-18 * * 1-5:周一到周五,每天 8:00 到 18:00 间的整点执行任务。
  • 0 0 1 * *:每月的第一天的午夜执行任务。

Crontab 文件的管理

使用以下命令可以管理 crontab 文件:

编辑用户的 crontab 文件:

crontab -e

这会打开当前用户的 crontab 文件进行编辑。

列出用户的 crontab 文件内容:

crontab -l

显示当前用户的所有定时任务。

删除用户的 crontab 文件:

crontab -r

删除当前用户的所有定时任务。

使用特定文件加载 crontab:

crontab filename

从指定的文件加载 crontab 配置。

Cron 特殊时间字符串

除了标准的时间字段外,Cron 还支持一些特殊的字符串来简化任务定义:

  • @reboot:系统重启时执行。
  • @yearly 或 @annually:每年执行一次,相当于 0 0 1 1 *
  • @monthly:每月执行一次,相当于 0 0 1 * *
  • @weekly:每周执行一次,相当于 0 0 * * 0
  • @daily 或 @midnight:每天执行一次,相当于 0 0 * * *
  • @hourly:每小时执行一次,相当于 0 * * * *