在 Ubuntu 里“定时器”通常有两种常见场景:
下面分别说明如何排查错误。
systemctl list-timers
systemctl status your-timer.timer
重点看:
Active: 是否正常Last trigger / Next triggerfailedsystemctl status your-timer.service
⚠️ 定时器只是“触发器”,真正执行的是 .service
journalctl -u your-timer.service
journalctl -u your-timer.timer
查看最近日志:
journalctl -u your-timer.service -n 50 --no-pager
实时查看:
journalctl -u your-timer.service -f
.service 里 ExecStart 路径不对示例 service:
[Unit]
Description=My Script
[Service]
Type=simple
ExecStart=/opt/myscript.sh
systemctl start your-timer.service
看是否报错。
crontab -l
systemctl status cron
Ubuntu 默认可能没开 cron 日志:
sudo vi /etc/rsyslog.d/50-default.conf
取消注释:
cron.* /var/log/cron.log
然后:
sudo systemctl restart rsyslog
查看日志:
tail -f /var/log/cron.log
✅ 推荐写法:
* * * * * /bin/bash /home/user/test.sh >> /home/user/cron.log 2>&1
bash /path/to/script.sh
如果手动都失败,定时任务一定失败。
在脚本里加:
echo "$(date) run" >> /tmp/debug.log
ls -l /path/to/script.sh
chmod +x /path/to/script.sh
systemctl list-timers | grep yourname
crontab -l | grep yourname
如果你愿意,可以告诉我:
我可以帮你精确定位问题。