| 场景 | cron 迁移 timer |
|---|---|
| 产物 | xx.service + xx.timer |
| 要点 | 先并存验证再删旧任务 |
1) service
1) service
# /etc/systemd/system/db-backup.service
[Unit]
Description=Daily DB backup
After=network-online.target mysql.service
Wants=network-online.target
[Service]
Type=oneshot
User=backup
ExecStart=/opt/scripts/db-backup.sh
Nice=10
IOSchedulingClass=idle2) timer + 3) 启用
2) timer + 3) 启用
# /etc/systemd/system/db-backup.timer
[Unit]
Description=Run db-backup daily
[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true
RandomizedDelaySec=300
[Install]
WantedBy=timers.target
# 启用
sudo systemctl daemon-reload
sudo systemctl enable --now db-backup.timer
systemctl list-timers db-backup.timer --no-pager4) 验证与 5) 下线
4) 验证与 5) 下线
sudo systemctl start db-backup.service # 手动触发一次验证
journalctl -u db-backup.service --since today --no-pager | tail
# 验证通过后删除旧 crontab 行(先备份)
crontab -l > ~/cron.bak && crontab -e迁移期两套并存会重复执行:cron 行改成 echo skipped 观察一天,或直接停旧任务一天后再删。