重构大版本更新
一口气全面统一博客样式,移除部分冗余导航页面,更专注内容展示。
每天自动备份、每小时清缓存——两种定时方案的选择与实战配置。
备份为什么要每天手动做?日志为什么要手动清?定时任务让服务器在你睡觉时自己干活。
crontab -e # 编辑当前用户的定时任务五颗星代表五个时间位:
分 时 日 月 周* * * * * 要执行的命令└─ 30 4 * * * → 每天 4:30└─ */10 * * * * → 每 10 分钟└─ 0 3 * * 1 → 每周一凌晨 3 点# 备份脚本 /root/backup-db.sh#!/bin/bashDATE=$(date +%F)pg_dump mydb > /backup/mydb-$DATE.sqlgzip /backup/mydb-$DATE.sql # 压缩省空间find /backup -name "*.sql.gz" -mtime +7 -delete # 只留 7 天# crontab 里登记:每天凌晨 3 点执行0 3 * * * /root/backup-db.sh >> /var/log/backup.log 2>&1末尾的
>> log 2>&1很重要:错误信息和正常输出都记进日志,否则失败了都不知道。
cron 的问题:错过了就不执行(服务器关机时任务就丢了)。systemd timer 支持补跑。
[Unit]Description=Database backup
[Service]Type=oneshotExecStart=/root/backup-db.sh[Unit]Description=Run backup daily
[Timer]OnCalendar=*-*-* 03:00:00Persistent=true # 关键:错过的开机补跑
[Install]WantedBy=timers.targetsystemctl daemon-reloadsystemctl enable --now backup.timersystemctl list-timers # 查看所有定时器下次执行时间| 场景 | 选择 |
|---|---|
| 简单周期任务,错过无所谓 | cron |
| 错过必须补跑(如备份) | systemd timer + Persistent |
| 需要依赖其他服务(等数据库起来再跑) | systemd timer |
cron 五段式是基本功必须会;生产环境的备份类任务建议 systemd timer 的 Persistent=true。定时任务 + 前一篇的 Shell 脚本 = 服务器自动化的完整拼图。