Debian 下“定时器失效”通常不是系统 bug,而是配置、权限或服务状态问题。下面按最常见原因给你一个排查清单(以 systemd timer 为主,也顺带提 cron)。
systemctl list-timers
看不到你的 timer,说明没启用:
systemctl enable --now your.timer
✅ 只 enable 不 --now,不会立即生效
✅ 只 start 不 enable,重启后失效
示例正确写法:
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
常见错误:
OnCalendar=daily ✅OnCalendar=every day ❌检查语法:
systemd-analyze verify your.timer
timer 只是“触发器”,真正干活的是 service:
systemctl status your.service
journalctl -u your.service
常见问题:
Type=oneshot 没写如果机器关机或睡眠:
Persistent=true
否则错过就不再跑。
timedatectl
如果时区不对,定时时间会“看起来失效”。
systemctl status cron
Debian 12 默认是 cron 或 cronie
crontab -l # 当前用户
crontab -u root -l
cron 环境极小:
PATH=/usr/bin:/bin
❌ 脚本里用 python、source 可能失败
✅ 用绝对路径:
0 3 * * * /usr/bin/python3 /opt/script.py
grep CRON /var/log/syslog
# systemd
systemctl status your.timer
systemctl list-timers
journalctl -u your.timer
journalctp -u your.service
# cron
systemctl status cron
grep CRON /var/log/syslog
你可以直接把下面信息贴出来,我能精准判断:
.timer / .service / crontab 内容journalctl 或日志报错我可以一行一行帮你改 ✅