Ubuntu 下“定时器不执行”通常是指 cron / systemd timer 没有按预期运行。下面按最常见原因 → 排查方法来说明。
sudo systemctl status cron
如果不是 active (running):
sudo systemctl start cron
sudo systemctl enable cron
cron 时间是 服务器本地时间,不是你的时钟。
示例:
0 2 * * * /home/user/backup.sh
表示 每天 2:00
常见错误:
0 2 * * * 但服务器时区不对检查时区:
timedatectl
chmod +x /path/to/script.sh
cron 的环境极少,导致脚本里命令找不到。
✅ 推荐写法:
0 2 * * * /bin/bash /home/user/backup.sh >> /tmp/cron.log 2>&1
脚本里也建议:
#!/bin/bash
source /etc/profile
cron 里 不能用相对路径
❌ 错误:
python app.py
✅ 正确:
/usr/bin/python3 /home/user/app.py
crontab -l # 当前用户
sudo crontab -l # root
别搞混。
加日志:
* * * * * /path/script.sh >> /tmp/cron.log 2>&1
然后:
cat /tmp/cron.log
systemctl list-timers
启用:
sudo systemctl enable mytimer.timer
sudo systemctl start mytimer.timer
systemctl status mytimer.service
journalctl -u mytimer.service
示例(每天 3 点):
OnCalendar=*-*-* 03:00:00
如果你愿意,可以把:
贴出来,我可以直接帮你定位是哪一步错了。