Ubuntu 定时器自定义指南
可以自定义,常见做法有两类:一是使用传统的 cron,二是使用 systemd timer。cron 上手快、语法简洁;systemd timer 与 systemd 服务深度集成,支持日历时间、单调时钟、随机延迟、精度控制等高级能力,适合复杂或需要精细控制的场景。
方案一 使用 cron 自定义
方案二 使用 systemd timer 自定义
[Unit]
Description=Backup Service
[Service]
Type=oneshot
ExecStart=/home/user/backup.sh
User=root
[Unit]
Description=Run backup.service daily at 8am
[Timer]
OnCalendar=*-*-* 08:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers --all
systemctl status backup.timer
journalctl -u backup.timer -f
[Timer]
OnBootSec=10min
OnUnitActiveSec=1h
[Timer]
OnCalendar=daily
RandomizedDelaySec=600
Persistent=true
[Timer]
AccuracySec=1m
如何选择
| 维度 | cron | systemd timer |
|---|---|---|
| 语法与易用性 | 基于时间表的 5 字段语法,简单直观 | 基于 OnCalendar/OnBootSec/OnUnitActiveSec 等指令,更灵活 |
| 触发模型 | 按日历时间触发 | 日历时间 + 单调时钟(相对时间) |
| 高级能力 | 基础功能为主 | 支持 随机延迟、精度控制、依赖管理、日志与状态集成 |
| 适用场景 | 日常、固定时间点的任务 | 复杂调度、分布式去峰、需要与 systemd 深度集成的任务 |