Debian 下“定时器不执行”通常指的是 systemd timer(而不是 cron)不生效。下面按最常见原因 → 排查步骤给你一个清单,你可以逐条对照。
systemctl list-timers
如果看不到你的 timer,说明没启用:
systemctl enable your.timer
systemctl start your.timer
✅ 只 start 不 enable,重启后就不再执行。
timer 只是“触发器”,真正执行的是 service。
❌ 错误示例:
[Timer]
OnCalendar=*-*-* 03:00:00
但 service 不存在或名字不对:
your.service 不存在
✅ 正确关系:
your.timer → triggers → your.service
检查:
systemctl status your.service
[Install] 或 Typeservice 示例(必须):
[Unit]
Description=My Job
[Service]
Type=oneshot
ExecStart=/usr/local/bin/myscript.sh
[Install]
WantedBy=multi-user.target
❌ 常见错误:
Type 没写ExecStart 路径错ls -l /usr/local/bin/myscript.sh
必须:
chmod +x /usr/local/bin/myscript.sh
并且脚本要有:
#!/bin/bash
timedatectl
如果时区不是你预期的:
timedatectl set-timezone Asia/Shanghai
⚠️ systemd timer 用的是系统时间
错误示例:
OnCalendar=every day 3:00
✅ 正确:
OnCalendar=*-*-* 03:00:00
查看下次执行时间:
systemctl list-timers --all
journalctl -u your.timer
journalctl -u your.service
如果你是 cron 不执行:
systemctl status cron
检查:
crontab -lsystemctl enable your.timer
systemctl start your.timer
systemctl status your.timer
systemctl status your.service
journalctl -u your.service
ls -l /path/to/script.sh
如果你愿意,可以把下面内容贴出来,我可以直接帮你改:
.timer 文件.service 文件journalctl 报错信息我可以直接告诉你哪一行有问题。