Debian 中 定时器(timer)不生效 通常指的是 systemd timer,常见原因集中在 服务名、状态、路径、权限、日志 等方面。下面按 最常见 → 较少见 的顺序给你一个排查清单。
systemctl list-timers
如果看不到你的 timer,很可能是没启用:
sudo systemctl enable your.timer
sudo systemctl start your.timer
✅ 注意:
start 只是当前生效enable 才能开机生效systemd timer 必须对应一个 .service 文件。
✅ 正确示例:
mybackup.timer
mybackup.service
❌ 常见错误:
mybackup.servicemy-backup.service检查:
systemctl list-unit-files | grep mybackup
systemctl status your.timer
查看:
Trigger: ...Active: waiting✅ 可手动触发测试:
sudo systemctl start your.service
或立即触发 timer:
sudo systemctl start your.timer
timer 本身运行了,但 service 失败。
查看 service 状态:
systemctl status your.service
journalctl -u your.service -n 50
✅ 常见错误:
ls -l /path/to/script.sh
✅ 必须:
chmod +x /path/to/script.sh
OnBootSec 但系统时间异常如果你用的是:
OnBootSec=5min
但系统时间不对(如虚拟机、容器),timer 可能不触发。
✅ 检查时间:
timedatectl
systemctl list-timers --all
systemctl status your.timer
systemctl status your.service
journalctl -u your.service
sudo systemctl start your.service
/etc/systemd/system/mytask.service[Unit]
Description=My Task
[Service]
Type=oneshot
ExecStart=/usr/local/bin/mytask.sh
/etc/systemd/system/mytask.timer[Unit]
Description=Run mytask daily
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now mytask.timer
ps -p 1 -o comm=
输出应为 systemd
如果你之前用 cron,现在用 timer:
crontab -l
sudo crontab -l
你可以直接贴出:
1️⃣ .timer 文件
2️⃣ .service 文件
3️⃣ systemctl status your.timer 输出
4️⃣ Debian 版本(cat /etc/debian_version)
我可以 逐行帮你查问题 ✅