Cron 知识点速查

Cron 最适合安排重复性任务。 可以使用关联的 at 实用程序来完成一次性任务的调度。

Crontab 格式

格式

Min  Hour Day  Mon  Weekday
分钟  小时  天   月   周

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

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

示例

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

特殊字符串

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

Crontab 命令

--
crontab -e如果不存在,则编辑或创建一个 crontab 文件
crontab -l显示 crontab 文件
crontab -r删除 crontab 文件
crontab -v显示您上次编辑 crontab 文件的时间 (非标准)

轻松添加任务

echo "@reboot echo hi" \| crontab

特殊字符

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

另见