在 Linux 里,trigger 不执行通常出现在 systemd 定时器(timer)、udev 规则、systemd 单元之间的触发,或者自定义 trigger 脚本这几类场景中。下面按常见原因给你一个排查清单。
systemctl list-timers
systemctl status xxx.timer
如果没有启动:
systemctl enable xxx.timer
systemctl start xxx.timer
timer 只是触发器,真正执行的是 .service
systemctl start xxx.service
手动能跑,timer 才可能有用。
示例:
[Timer]
OnCalendar=*-*-* 03:00:00
错误写法会导致 timer 永远不触发。
查看下次触发时间:
systemctl list-timers --all
Persistent=false 影响如果系统关机错过时间:
Persistent=true
否则不会补执行。
udevadm control --reload
udevadm trigger
调试:
udevadm monitor
插设备看是否触发。
udev 中:
RUN+="/usr/local/bin/script.sh"
必须:
sudo例如:
[Unit]
Triggers=xxx.service
注意:
Wants= / After=常见原因:
+x#!/bin/bash)测试:
bash -x your_trigger.sh
✅ 是否 enable + start
✅ 手动能否执行
✅ 日志是否有报错
journalctl -u xxx.service
journalctl -u xxx.timer
✅ 路径 / 权限是否正确
如果你能告诉我:
我可以直接帮你定位问题。