绝技四"定时召唤"-Day42|定时交付:cron 实战与日志排查

16 次阅读 2026-10-29 13:51

📖 知识点回顾

  1. crontab -e / -l:编辑、查看定时任务

  2. cron 五格:分 时 日 月 周

  3. >> 追加输出到文件

  4. 脚本 + 定时 = 无人值守自动化

💡 交付套路写脚本 → 配 cron 定时 → 输出重定向到日志 → 用日志验证是否执行 → 排查异常

⚔️ Kata 实战任务(收官实战)

任务需求:

  1. 写一个 "备份脚本",把日志写到 ~/备份日志.txt

  2. 用 crontab 配一个每 1 分钟执行的定时任务(便于马上验证)

  3. 等待 1~2 分钟后,用 cat 查看日志,确认任务真的自动执行了

  4. 用 crontab -l 查看任务配置

  5. 汇总:验证结果 + 排查思路

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

 

# 1. 写一个备份脚本(含日志)
vim 备份.sh
#   内容:
#   #!/bin/bash
#   mkdir -p 备份
#   cp *.txt 备份/ 2>/dev/null
#   echo "$(date) 备份完成" >> /home/user/备份日志.txt
#   (:wq 保存退出)

# 2. 配定时任务:每1分钟跑一次(便于验证)
crontab -e
#   加一行:
#   * * * * * /home/user/备份.sh
#   保存退出

# 3. 等1~2分钟,查看日志确认已执行
cat /home/user/备份日志.txt

# 4. 查看任务配置
crontab -l

 

运行示例:

 

user@linux:~$ crontab -l
* * * * * /home/user/备份.sh

(等待1分钟后)
user@linux:~$ cat /home/user/备份日志.txt
2026-10-29 10:00:01 备份完成
2026-10-29 10:01:01 备份完成

 

💡 观察:每 1 分钟任务自动执行,日志里出现两条 "备份完成" 记录,时间正好间隔 1 分钟。这就证明 cron 真的到点干活了,日志就是它的 "考勤记录"。

排查思路(任务没执行时)

  1. crontab -l 确认任务配置在不在

  2. 看日志文件:任务写了日志,但没记录 → 检查时间是否到点

  3. 脚本手动跑一遍 bash 备份.sh,确认脚本本身能运行

  4. 检查路径:脚本 / 日志用绝对路径,避免相对路径问题

  5. 权限:脚本要可执行(chmod +x),用户有权限写日志目录

⚠️ 易错提醒

  1. 日志一定要用绝对路径,别写相对路径(cron 环境没有 "当前目录" 概念)

  2. 脚本先手动 bash 跑通,再交给 cron,好排查

  3. 日志是排查的 "眼睛":任务有没有跑、跑没跑成功,都看它

🧠 思考题

  1. 为什么定时任务的脚本和日志要写 "绝对路径"?相对路径在 cron 里有什么坑?

  2. 如果到点了日志里没有新记录,按什么顺序排查?(提示:任务配置→脚本能否跑→路径→权限)