Homelab 笔记

用 systemd timer 替代 cron

以前定时任务都丢在 crontab 里,出了问题只能去翻邮件或者自己写日志。后来逐步换成了 systemd timer,记录一下写法。

先写一个 service,描述要做的事:

# /etc/systemd/system/backup.service
[Unit]
Description=Nightly backup

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

再写一个同名的 timer,描述什么时候做:

# /etc/systemd/system/backup.timer
[Unit]
Description=Run backup nightly

[Timer]
OnCalendar=*-*-* 03:00:00
RandomizedDelaySec=15min
Persistent=true

[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now backup.timer
systemctl list-timers backup.timer

比 cron 好在哪

想手动触发一次,直接 systemctl start backup.service。