跳到主要内容

cron

基于 cron 表达式的定时任务管理工具,到点自动执行指定的 shell 命令。

用法

cron - 列出所有任务
cron add <name> <spec> <cmd> - 添加周期性任务
cron oneshot <name> <spec> <cmd> - 添加一次性任务
cron remove <name> - 移除任务

说明

  • spec 为标准 5 段 cron 表达式,含空格需用双引号包裹:"<minute> <hour> <day> <month> <week>"
  • cmd 为到点执行的 shell 命令,含空格需用双引号包裹
  • 时区从全局设置 timezone 读取,未设置时默认 Asia/Shanghai
  • add 添加的任务(periodic)每次匹配都会执行;oneshot 任务执行一次后自动移除
  • 任务 name 需唯一,重名添加或表达式非法都会失败
  • 不带参数执行 cron 会列出所有任务,每行显示 namespec 与类型(periodic/oneshot
  • 表达式语法详见 Cron 定时任务调度器

表达式字段

字段范围说明
0-59分钟
0-23小时
1-31每月第几天
1-12 或 JAN-DEC月份,可用名称缩写
0-6 或 SUN-SAT星期,0=周日(7 等价于 0)

每字段支持 *na-b*/sa,b,c 等写法。当日和星期都被显式指定时,命中其一即匹配(或),否则需同时匹配(与)。

示例

# 列出所有任务
cron

# 每分钟执行
cron add t1 "* * * * *" "echo hi"

# 每 5 分钟执行一次
cron add t2 "*/5 * * * *" "echo tick"

# 元旦 0 点执行一次(一次性)
cron oneshot newyear "0 0 1 1 *" "echo happy new year"

# 每周一 8:30 执行
cron add weekly "30 8 * * 1" "echo monday"

# 移除任务
cron remove t1