cron · 定时闹钟
上游:nano(用 nano 编辑定时任务表)· shell-script(cron 运行的是脚本) 下游:(Tier 4 终点,后续扩展见 Tier 5) 参见:systemctl(开机自启用 systemctl,定时任务用 cron)
一句话是什么
cron 让 Linux 在指定时间自动运行命令——
就像设了一个永远不会忘的闹钟,时间到了就自动做某件事。
为什么需要它
Minecraft 存档需要每天备份,但你不可能每天手动跑 backup.sh。
cron 让这件事自动发生:
每天凌晨 3 点自动备份存档
每周日自动清理 7 天以上的旧备份
每小时检查服务器是否还在运行
设好就不用管了,cron 帮你记着。
核心用法
编辑定时任务表
crontab -e # 编辑当前用户的定时任务(会打开 nano)
crontab -l # 查看当前所有定时任务
crontab -r # 删除所有定时任务(危险!)cron 时间格式(5个字段)
分钟 小时 日期 月份 星期 命令
* * * * * 命令
每个字段含义:
分钟:0-59
小时:0-23
日期:1-31
月份:1-12
星期:0-7(0和7都是周日)
* := 每个
常用时间写法
| 时间含义 | cron 写法 |
|---|---|
| 每分钟 | * * * * * |
| 每小时整点 | 0 * * * * |
| 每天凌晨 3 点 | 0 3 * * * |
| 每周日凌晨 2 点 | 0 2 * * 0 |
| 每月 1 号中午 12 点 | 0 12 1 * * |
| 每 5 分钟 | */5 * * * * |
记忆口诀
分 时 日 月 周
分钟跑最快,排最前面
Linux 笑话
有个程序员设置 cron 任务时,想每分钟运行一次:
* * * * * /home/aaron/cleanup.sh
然后第二天早上发现系统日志写满了硬盘—— cleanup.sh 里有个 bug,每次运行都会产生 10MB 日志。
一晚上运行了 480 次,产生了 4.8GB 日志文件。
教训:cron 任务上线前,先手动运行脚本确认没有 bug, 再设置定时任务,并且加上日志限制。
例题精讲
📗 初探 Starter — 设置第一个定时任务
# 第一步:打开定时任务编辑器
crontab -e
# 第一次运行可能会让你选编辑器,选 nano(输入对应数字)
# 添加一行(每天下午 5 点提醒写作业):
0 17 * * * echo "Aaron,该写作业了!" >> ~/提醒.txt
# 保存退出(Ctrl+O → Enter → Ctrl+X)
# 第二步:确认设置成功
crontab -l
# 0 17 * * * echo "Aaron,该写作业了!" >> ~/提醒.txt
# 等到下午 5 点,检查文件
cat ~/提醒.txt📘 应用 User — 每天自动备份 Minecraft 存档
# 前提:backup.sh 已经写好并测试过
ls -la ~/mc-server/backup.sh
# -rwxr-xr-x ... backup.sh ← 确认有执行权限
# 打开 crontab
crontab -e
# 添加每天凌晨 3 点备份:
0 3 * * * /home/aaron/mc-server/backup.sh >> /home/aaron/mc-server/backup.log 2>&1
# 解释最后那段:
# >> backup.log ← 把输出追加到日志文件
# 2>&1 ← 错误信息也写进日志(不然出错了你不知道)
# 验证(第二天早上看日志)
cat ~/mc-server/backup.log📙 管理 Admin — 完整的自动化运维设置
# 打开 crontab
crontab -e
# 完整的 Minecraft 服务器自动维护任务:
# 每天凌晨 3:00 备份存档
0 3 * * * /home/aaron/mc-server/backup.sh >> ~/logs/backup.log 2>&1
# 每周日凌晨 4:00 清理 7 天前的备份
0 4 * * 0 find ~/mc-backups -name "*.tar.gz" -mtime +7 -delete
# 每小时检查服务器进程是否还活着
0 * * * * ps aux | grep -q "[b]edrock_server" || echo "$(date): 服务器挂了!" >> ~/logs/monitor.log
# 查看任务
crontab -l
# 查看 cron 运行日志(确认任务有没有执行)
grep CRON /var/log/syslog | tail -20grep -q "[b]edrock_server" 的技巧:
-q= 安静模式,不输出,只看退出码[b]edrock_server中括号让 grep 自己不被 grep 到
官方文档参考
man crontab # 完整手册
man 5 crontab # crontab 文件格式说明cron 格式:分 时 日 月 周 命令;
*= 每个;*/N= 每 N 个。建议用>> log 2>&1记录输出。 在线生成器:https://crontab.guru(输入时间格式,实时预览含义)
节点链接
上游(cron 运行的是这些写好的东西)
- nano ← crontab -e 用 nano 编辑
- shell-script ← cron 最常调用的就是 .sh 脚本
同层(两种自动化方式,各有用途)
- systemctl ← 开机自启用 systemctl,定时任务用 cron ← 口诀:开机 → systemctl,定时 → cron
实战组合
- find ← cron 定时用 find 清理旧文件
- tar ← cron 定时用 tar 备份
- Minecraft-Bedrock-Server ← 定时备份存档是这个项目的标配
节点版本:v1.0 · 2026-04-20 Tier 4 终点节点——学完这个,Linux 基础自动化全部打通