🚀 Cron操作指南之格式规程详解

85 阅读2分钟

Crontab 格式

Min  Hour Day  Mon  Weekday
分钟  小时  天   月   周
*    *    *    *    *   <要执行的命令>
┬    ┬    ┬    ┬    ┬
│    │    │    │    └─  星期几         (0=周日 .. 6=星期六)
│    │    │    └──────  月            (1..12)
│    │    └───────────  月份中的某天    (1..31)
│    └────────────────  小时           (0..23)
└─────────────────────  分钟           (0..59)

# 示例
*/15 * * * *	每 15 分钟
0 * * * *	每隔一小时
0 */2 * * *	每 2 小时
15 2 * * *	每天凌晨 21515 2 * * ?	每天凌晨 21510 9 * * 5	每周五上午 9:10
0 0 * * 0	每个星期日的午夜
15 2 * * 1L	每月最后一个星期一凌晨 21515 0 * * 4#2	每个月的第二个星期四早上 00:15
0 0 0 1 * *	每个月的 1 日(每月)
0 0 0 1 1 *	每年 11 日(每年)
@reboot	每次重启 (非标准)

# 特殊字符串
@reboot	运行一次,在系统启动时 (非标准)
@yearly	每年运行一次,“0 0 1 1 *” (非标准)
@annually	(与@yearly 相同)(非标准)
@monthly	每月运行一次,“0 0 1 * *” (非标准)
@weekly	每周运行一次,“0 0 * * 0” (非标准)
@daily	每天运行一次,“0 0 * * *” (非标准)
@midnight	(与@daily 相同)(非标准)
@hourly	每小时运行一次,“0 * * * *” (非标准)

# 特殊字符
星号(*)	匹配字段中的所有值或任何可能的值。
横杆(-)	用于定义范围。例如:第 5 个字段(星期几)中的 1-5 每个工作日,即星期一到星期五
斜线 (/)	第一个字段(分钟)/15 表示每十五分钟或范围的增量。
逗号(,)	用于分隔项目。例如:第二个字段(小时)中的 268 在凌晨 2 点、早上 6 点和早上 8 点执行
L	仅允许用于 月份中的某天 或 星期几 字段,星期几 中的 2L 表示每个月的最后一个星期二
井号 (#)	仅允许用于 星期几 字段,后面必须在 1 到 5 的范围内。例如,4#1 表示给定月份的“第一个星期四”。
问号(?)	可以代替“*”并允许用于月份和星期几。使用仅限于 cron 表达式中的 月份中的某天 或 星期几。

字段范围特殊字符
分钟 Minute0- 59 , - * /
小时 Hour0 - 23, - * /
月份中的某天1- 31 , - * ? / L W
月 Month1 - 12, - * /
星期几0 - 6, - * ? / L #
年 Year1970–2099, -

Crontab 命令

  • crontab -e 如果不存在,则编辑或创建一个 crontab 文件
  • crontab -l 显示 crontab 文件
  • crontab -r 删除 crontab 文件
  • crontab -v 显示您上次编辑 crontab 文件的时间 (非标准)
# 轻松添加任务
echo "@reboot echo hi" \| crontab