在 Debian(以及大多数 Linux 发行版)中,定时器(Timer)通常是指 systemd Timer,用来按周期或时间点触发任务。下面从最常见用法到示例系统说明。
systemd Timer 由 两个文件组成:
Timer 会 触发对应的 Service。
例如:每 10 分钟执行一个脚本 /home/user/backup.sh
sudo nano /etc/systemd/system/backup.service
内容示例:
[Unit]
Description=Backup Script
[Service]
Type=oneshot
ExecStart=/home/user/backup.sh
✅
Type=oneshot表示执行一次即结束(定时任务常用)
sudo nano /etc/systemd/system/backup.timer
[Unit]
Description=Run backup every 10 minutes
[Timer]
OnBootSec=5min
OnUnitActiveSec=10m
[Install]
WantedBy=timers.target
含义:
OnBootSec=5min:开机 5 分钟后开始OnUnitActiveSec=10m:每次执行后 10 分钟再次执行[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
OnCalendar=Mon *-*-* 03:30:00
OnCalendar=hourly
或:
OnCalendar=*-*-* *:00:00
sudo systemctl daemon-reload
sudo systemctl enable backup.timer
sudo systemctl start backup.timer
systemctl list-timers
systemctl status backup.timer
systemctl status backup.service
journalctl -u backup.service
| 含义 | 写法 |
|---|---|
| 每分钟 | * * * * * |
| 每小时 | *-*-* *:00:00 |
| 每天 08:30 | *-*-* 08:30:00 |
| 每周一 | Mon *-*-* 00:00:00 |
| 每月 1 号 | *-*-01 00:00:00 |
| 对比 | systemd Timer | cron |
|---|---|---|
| 精度 | 秒级 | 分钟级 |
| 日志 | journalctl | 邮件/日志 |
| 依赖 | systemd | crond |
| 推荐 | 现代 Debian | 老系统 |
也可以用 cron(传统方式):
crontab -e
*/10 * * * * /home/user/backup.sh
✅ Debian 10+ 推荐 systemd Timer
✅ 周期任务 = Timer + Service
✅ 查看状态用 systemctl list-timers
如果你愿意,可以告诉我:
我可以直接帮你写完整可用的 Timer 文件。