Ubuntu 下“定时器报错”通常指的是 systemd 的 timer(而不是 cron),也可能是 cron / at 或 shell 的 sleep/timeout。下面我按最常见原因给你一个排查清单,你可以对照看看是哪一种。
报错现象:
Failed to start xxx.timer: Unit xxx.timer not found
或:
timers.target 已启动,但定时器不触发
✅ 解决:
sudo systemctl enable xxx.timer
sudo systemctl start xxx.timer
查看状态:
systemctl list-timers
systemctl status xxx.timer
timer 只负责“触发”,真正执行的是 .service
常见错误:
Type= 或写错✅ 检查:
systemctl status xxx.service
journalctl -u xxx.service
错误示例:
OnCalendar=every day 3:00
✅ 正确写法:
OnCalendar=*-*-* 03:00:00
验证语法:
systemd-analyze calendar "*-*-* 03:00:00"
如果你是 用户 timer:
systemctl --user enable xxx.timer
但用户没登录 → timer 不跑
✅ 解决:
loginctl enable-linger 用户名
cron 环境非常“干净”,没有 PATH
❌ 错误:
0 3 * * * backup.sh
✅ 正确:
0 3 * * * /usr/bin/bash /home/user/backup.sh
chmod +x script.sh
grep CRON /var/log/syslog
例如:
sleep 60 && command
常见问题:
nohup 或 systemd✅ 推荐:
nohup sleep 60 && command &
你可以回答我几个问题,我可以直接定位:
lsb_release -a)我可以直接帮你改到能跑。