Debian 下“定时器执行失败”通常指 systemd timer 或 cron 没按预期运行。下面按常见原因系统梳理,你可以对照排查。
systemctl list-timers
看不到你的 timer,说明没启用:
systemctl enable --now your.timer
timer 只负责“触发”,真正执行的是 .service:
systemctl status your.service
journalctl -u your.service
常见问题:
✅ 建议在 service 里写绝对路径:
[Service]
ExecStart=/usr/bin/bash /opt/script.sh
如果是用户级 timer:
systemctl --user list-timers
需要:
loginctl enable-linger 用户名
否则用户退出后 timer 不运行。
systemd-analyze calendar "daily"
验证时间格式是否正确。
systemctl status cron
没运行就:
systemctl start cron
cron 默认:
❌ 错误示例:
0 3 * * * backup.sh
✅ 正确写法:
0 3 * * * /bin/bash /home/user/backup.sh >> /tmp/cron.log 2>&1
/etc/cron.allow/etc/cron.denygrep CRON /var/log/syslog
或:
journalctl -u cron
✅ 手动执行一次脚本
✅ 检查退出码 echo $?
✅ 脚本开头加:
#!/bin/bash
set -e
✅ timer / cron 输出重定向到日志
✅ 确认用户是否有执行权限
你可以贴出:
.timer / .service 或 crontab 内容journalctl 或 /var/log/syslog)我可以直接帮你定位是 配置问题、权限问题还是环境问题。