Debian 定时器与其他服务的集成与对比
一 核心概念与工作机制
二 与系统服务的集成方式
[Unit]
Description=My task
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/my-task.sh
三 典型场景与配置示例
# /etc/systemd/system/backup.service
[Unit]
Description=Daily backup
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
# /etc/systemd/system/backup.timer
[Unit]
Description=Run backup daily at 02:00
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
启用:systemctl daemon-reload && systemctl enable --now backup.timer# /etc/systemd/system/heartbeat.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/heartbeat.sh
# /etc/systemd/system/heartbeat.timer
[Timer]
OnUnitActiveSec=5min
AccuracySec=1s
[Install]
WantedBy=timers.target
# /etc/systemd/system/runonce.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/init-job.sh
# /etc/systemd/system/runonce.timer
[Timer]
OnBootSec=30s
[Install]
WantedBy=timers.target
四 与 cron 的对比与选择
| 维度 | cron | systemd 定时器 |
|---|---|---|
| 学习曲线 | 简单、固定语法 | 稍复杂、需理解 unit 与依赖 |
| 日志与排错 | 依赖 syslog,需自行重定向 | 原生集成 journald,journalctl 直接查看 |
| 依赖管理 | 无 | 支持 After/Requires/Wants 等精细依赖 |
| 错过触发 | 通常跳过 | 可启用 Persistent=true 补跑 |
| 适用场景 | 简单、稳定、通用周期任务 | 需与系统服务深度集成、可靠性要求更高 |
五 常见故障排查清单