在 Debian(以及大多数现代 Linux 发行版)中,“定时器”通常指 systemd 的 timer 单元,用来代替传统的 cron。下面我分几种常见情况说明。
例如:每天执行一个脚本 /opt/backup.sh
sudo nano /etc/systemd/system/backup.service
内容:
[Unit]
Description=Backup Script
[Service]
Type=oneshot
ExecStart=/opt/backup.sh
注意:
Type=oneshot表示执行一次就结束- 脚本要有可执行权限:
chmod +x /opt/backup.sh
sudo nano /etc/systemd/system/backup.timer
示例(每天 03:00 执行):
[Unit]
Description=Run backup daily
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
常用时间写法:
OnCalendar=*-*-* 03:00:00 每天 3 点OnCalendar=hourly 每小时OnCalendar=weekly 每周OnBootSec=10min 开机后 10 分钟OnUnitActiveSec=1h 上一次运行后 1 小时sudo systemctl daemon-reexec
sudo systemctl enable --now backup.timer
systemctl list-timers
systemctl status backup.timer
journalctl -u backup.service
如果你只是想“定时执行命令”,cron 更简单。
crontab -e
示例(每天 3 点):
0 3 * * * /opt/backup.sh
查看:
crontab -l
sudo apt install at
echo "/opt/backup.sh" | at 03:00
| 场景 | 推荐 |
|---|---|
| 系统级任务 | systemd timer |
| 用户级简单任务 | cron |
| 临时任务 | at |
如果你愿意,可以告诉我:
我可以直接帮你写好完整配置。