Ubuntu 下“定时器失效”通常不是单一原因,而是 cron / systemd timer / 权限 / 环境 这几类问题之一。下面按最常见情况帮你排查。
cron(最常见)systemctl status cron
如果没运行:
sudo systemctl start cron
sudo systemctl enable cron
crontab -e
/etc/crontab
⚠️ /etc/crontab 里必须写用户名:
* * * * * root /path/script.sh
chmod +x /path/script.sh
cron 的环境变量很少:
PATH=/usr/bin:/bin
✅ 脚本里用绝对路径:
/usr/bin/python3 /home/user/a.py
而不是:
python3 a.py
cron 默认把输出邮件发给你,但很多系统没配 mail。
✅ 建议加日志:
* * * * * /path/script.sh >> /tmp/cron.log 2>&1
例子:
0 0 * * * # 每天 0 点
*/5 * * * * # 每 5 分钟
⚠️ Ubuntu 默认是 本地时间,不是 UTC(除非你改过)
systemd timersystemctl list-timers
systemctl status mytimer.timer
启用:
systemctl enable --now mytimer.timer
timer 只是“触发”,真正执行的是 .service
查看:
journalctl -u myservice.service
例如:
OnCalendar=*-*-* 02:00:00
⚠️ WSL 默认 cron 不自动启动
sudo service cron start
df -h
df -i
你可以照着查:
# 1. 服务在不在
systemctl status cron
# 2. 有没有执行记录
grep CRON /var/log/syslog
# 3. 脚本能否手动跑
bash /path/script.sh
# 4. 有没有日志
cat /tmp/cron.log
如果你愿意,可以把下面信息发我,我可以直接帮你定位:
我可以直接告诉你“为什么没跑”。