Debian 中“定时器失效”通常不是系统 bug,而是配置、权限或运行环境问题。下面按常见原因 systematically 说明,并给出排查方法。
Debian 常见定时器有两类:
不同方式失效原因不同。
systemctl list-timers
看不到你的 timer,说明没 enable。
解决:
systemctl enable --now your.timer
timer 只负责“触发”,真正干活的是 .service。
查看:
systemctl status your.service
journalctl -u your.service
常见错误:
如果是:
systemctl --user enable xxx.timer
但用户未登录或 session 已结束,timer 不会跑。
解决:
loginctl enable-linger 用户名
示例错误:
OnCalendar=every day 3:00
✅ 正确:
OnCalendar=*-*-* 03:00:00
检查:
systemd-analyze calendar "你的表达式"
定时器依赖系统时钟。
timedatectl
若时间错,timer 永不触发。
systemctl status cron
若 inactive:
systemctl enable --now cron
/etc/crontab 或 crontab -ecrontab -ecron 环境极简:
* * * * * /bin/bash /path/script.sh
脚本里避免依赖 PATH、HOME
x/etc/cron.deny 禁止✅ timer/service 是否 enable
✅ journalctl 有无报错
✅ 路径是否绝对
✅ 权限是否正确
✅ 时间是否同步
✅ 是否用户级 timer 无 linger
你可以直接贴:
journalctl)我可以一步一步帮你查。