绝技四"定时召唤"-Day41|五格玄机:cron 时间格式(分 时 日 月 周)

5 次阅读 2026-10-29 11:59

📖 知识点

1. cron 时间的五格结构

每条任务 = 五个时间格 + 要执行的命令:

分  时  日  月  周    命令
0   8   *   *   *    /home/user/backup.sh

 

 

格位含义取值范围
第 1 格 分分钟0~59
第 2 格 时小时0~23
第 3 格 日日期(几号)1~31
第 4 格 月月份1~12
第 5 格 周星期几0~7(0 和 7 都指周日)

* 表示 "任意 / 每个"—— 那一格不限制。

💡 生活比喻五格就像一张 "排班表" 的五个选项:几分、几点、几号、几月、星期几。填上数字就指定具体时刻,填 * 就表示 "每天都行、每月都行"。

2. 常见写法对照

 

0 8 * * * 命令      # 每天8:00
30 9 * * * 命令     # 每天9:30
0 0 * * * 命令      # 每天午夜0:00
0 9 * * 1 命令      # 每周一9:00(周=1)
0 10 1 * * 命令     # 每月1号10:00
0 8 15 6 * 命令     # 每年6月15日8:00

 

读法:从 "分" 到 "周" 逐个看,填了数字就是指定那个维度,*就是不限。

3. 更灵活的符号

 

 

符号含义例子

*

任意

* * * * * 每分钟

,

多个值

0 8,20 * * * 每天 8 点和 20 点

-

范围

0 8-10 * * * 每天 8 到 10 点每小时

/

间隔

*/5 * * * * 每 5 分钟

 

*/5 * * * * 命令    # 每5分钟执行一次
0 8,20 * * * 命令   # 每天8:00和20:00执行

 

⚠️ 易错提醒

  1. 五个格子的顺序是分 时 日 月 周,别记错位置

  2. 第 2 格 "时" 是0~23(不是 1~24),午夜是 0

  3. 周和日同时指定时,两者是 "或" 的关系(满足其一就执行),实际使用建议只固定其中一个

⚔️ Kata 实战任务

任务需求:

  1. 用 crontab -e 打开编辑界面

  2. 按示例添加几条不同时间的任务(写 echo 到日志验证)

  3. 分别写:每天 8 点、每周一 9 点、每 5 分钟

  4. 用 crontab -l 查看自己写的几条任务

  5. 试着 "翻译" 每条任务是几点执行

参考代码(在终端依次敲)

 

# 1. 编辑定时任务
crontab -e
#   加入几条示例:
#   0 8 * * * echo "每天8点" >> /home/user/cron日志.txt
#   30 9 * * 1 echo "每周一9点半" >> /home/user/cron日志.txt
#   */5 * * * * echo "每5分钟" >> /home/user/cron日志.txt
#   保存退出

# 2. 查看
crontab -l

 

运行示例:

 

user@linux:~$ crontab -l
0 8 * * * echo "每天8点" >> /home/user/cron日志.txt
30 9 * * 1 echo "每周一9点半" >> /home/user/cron日志.txt
*/5 * * * * echo "每5分钟" >> /home/user/cron日志.txt

 

翻译:

  • 0 8 * * *:分 0、时 8、日月周任意 → 每天 8:00

  • 30 9 * * 1:分 30、时 9、周 1 → 每周一 9:30

  • */5 * * * *:分每 5、其他任意 → 每 5 分钟

🧠 思考题

  1. 0 8 * * * 和 30 9 * * 1 分别表示什么时候执行?五个格子的顺序是什么?

  2. */5 * * * * 里的 */5 表示什么?想 "每 10 分钟一次" 该怎么写?