在 Debian(以及其它使用 systemd 的 Linux 发行版)里,“定时器延迟”通常指 systemd timer 没有在设定的时间准时触发。常见原因和排查方法如下:
systemd timer 不会在关机或休眠期间运行:
OnCalendar=02:00Persistent=true)✅ 解决:
[Timer]
Persistent=true
例如:
[Timer]
OnBootSec=1h
OnUnitActiveSec=1d
这类定时器:
✅ 如果你要“每天 3 点跑”,应使用:
OnCalendar=*-*-* 03:00:00
systemd 默认允许 定时器误差:
AccuracySec=1min
含义:
实际触发时间可能在设定时间 ±1 分钟内
✅ 如果你要求“必须准点”:
AccuracySec=1s
当系统繁忙时:
✅ 查看:
systemd-analyze blame
top
即使 timer 准时触发:
ExecStart 脚本卡住✅ 检查:
systemctl status your.service
journalctl -u your.service
Restart 或依赖阻塞例如:
After=network-online.target
如果网络未上线,会一直等。
✅ 检查:
timedatectl
✅ 启用 NTP:
timedatect set-ntp true
OnCalendar 使用的是 本地时区
✅ 查看:
timedatectl | grep Time
systemctl list-timers
systemctl status your.timer
journalctl -u your.timer
journalctl -u your.service
[Unit]
Description=Daily job
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
AccuracySec=1s
[Install]
WantedBy=timers.target
如果你愿意,可以把你的 timer 文件内容 或 具体延迟现象(比如“应该 2 点跑,实际 2:05”)贴出来,我可以帮你精确分析。