在 Debian(以及其它使用 systemd 的 Linux 发行版)中,常说的“Debian 定时器”一般指的是 systemd timer(systemd 定时器)。它是 systemd 提供的一种定时任务机制,用来替代传统的 cron。
下面从概念、作用、组成和使用方式几个方面说明。
systemd timer 是 systemd 中的一种单元(unit)类型,用于在特定时间或间隔触发某个服务(service)。
简单理解:
.timer 文件:定义“什么时候执行”.service 文件:定义“执行什么”定时器触发后,会启动对应的 service。
| 对比项 | cron | systemd timer |
|---|---|---|
| 配置方式 | crontab 文本 | unit 文件 |
| 日志 | 难查 | 可用 journalctl |
| 精度 | 分钟级 | 秒级 |
| 依赖管理 | 无 | 支持 |
| 失效重试 | 无 | 支持 |
| 系统级/用户级 | 都支持 | 都支持 |
例如:backup.service
[Unit]
Description=Backup script
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
例如:backup.timer
[Unit]
Description=Run backup daily
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
OnCalendar=daily
OnCalendar=weekly
OnCalendar=monthly
OnCalendar=*-*-* 02:00:00 # 每天 2 点
OnCalendar=Mon *-*-* 03:00:00 # 每周一 3 点
OnCalendar=*:00/10 # 每 10 分钟
sudo systemctl enable --now backup.timer
systemctl list-timers
systemctl status backup.timer
journalctl -u backup.service
sudo systemctl stop backup.timer
sudo systemctl disable backup.timer
Debian 定时器(systemd timer)是一种由 systemd 管理的、可替代 cron 的定时任务机制,通过
.timer+.service实现“定时触发任务”。
如果你愿意,我也可以: