温馨提示×

ubuntu trigger为何不触发

小樊
48
2026-09-18 19:09:55
栏目: 智能运维

在 Ubuntu(或 Linux 一般语境)里,“trigger 不触发”通常出现在 systemd 或 udev 场景中。下面按常见情况帮你排查。


一、如果你说的是 systemd trigger(如 systemctl trigger / .trigger / 路径触发)

1. 单元未启用(最常见)

trigger 依赖的 unit 没有 enable:

systemctl enable your-unit.service

否则重启或 trigger 都不会生效。

2. 使用了 path 单元但文件未变化

*.path 单元只在文件发生变化时触发:

systemctl status your-path.path

测试:

touch /watched/file

3. 手动 trigger 但服务被 mask

systemctl is-enabled your-unit.service

如果是 masked:

systemctl unmask your-unit.service

4. 触发器条件不满足

如:

  • After= / Requires= 失败
  • ConditionPathExists= 不存在
  • WantedBy= 目标未启动

查看原因:

journalctl -u your-unit.service

二、如果你说的是 udev trigger(udevadm trigger)

1. 规则写错

检查:

udevadm control --reload
udevadm trigger

规则示例问题:

  • SUBSYSTEM 写错
  • ACTION 不匹配
  • 权限不足

调试:

udevadm monitor

2. 规则未 reload

修改 udev 规则后必须:

sudo udevadm control --reload-rules

三、如果你说的是 cron / 定时任务 trigger

1. 服务未运行

systemctl status cron

2. 用户 cron 写错

crontab -l

注意:

  • 路径要用绝对路径
  • 环境变量可能缺失

四、快速自查清单 ✅

  • [ ] unit / rule 是否已 enable
  • [ ] 是否 reload 过配置
  • [ ] 是否真的有“事件”发生
  • [ ] journalctl 是否有报错
  • [ ] 是否被 mask / disabled

如果你能告诉我:

  • 是 systemd / udev / cron / 其他
  • 具体的 unit 或规则内容

我可以直接帮你定位“为什么不触发”。

0 踩