温馨提示×

为何linux trigger不触发

小樊
39
2026-09-17 20:36:07
栏目: 智能运维

“Linux trigger 不触发”这个问题比较宽泛,因为 trigger(触发器) 在 Linux 里可能指很多东西。下面按常见场景给你一个排查思路,你可以对照看是哪一种。


一、systemd 的 trigger(如 systemd.path / systemd.timer

常见原因

  1. unit 没有 enable

    systemctl enable xxx.path
    systemctl enable xxx.timer
    

    否则重启或服务重载后不会生效。

  2. path unit 监听的文件/目录没变化

    • 只监听 close_write 等事件
    • touch 有时不触发(取决于配置)
  3. 未启动

    systemctl start xxx.path
    
  4. trigger 依赖的服务失败

    journalctl -u xxx.service
    

✅ 排查:

systemctl status xxx.path
journalctl -u xxx.path

二、inotify / fsnotify trigger

常见原因

  1. 监听路径不存在
  2. 事件掩码不对
    IN_MODIFY | IN_CREATE
    
  3. 文件在 overlay / NFS / tmpfs 上
    • inotify 对某些文件系统支持不好
  4. trigger 程序提前退出

✅ 排查:

inotifywait -m /path

三、udev trigger

常见原因

  1. rule 写错路径
    /etc/udev/rules.d/
    
  2. ATTR / KERNEL 不匹配
  3. 没 reload
    udevadm control --reload
    udevadm trigger
    

✅ 测试:

udevadm test /sys/class/...

四、数据库 trigger(MySQL / PostgreSQL)

如果是 Linux 上跑的数据库 trigger 不触发

  • 事务未提交
  • 操作类型不对(INSERT/UPDATE/DELETE)
  • 触发器被禁用

五、自定义脚本 / 信号 trigger

  • 信号未发送
  • 脚本无执行权限
  • 进程已退出

✅ 建议你补充的信息

为了更准确回答,你可以说:

  1. 哪种 trigger?(systemd / udev / inotify / 数据库 / 其他)
  2. 相关配置或代码
  3. Linux 发行版和版本

我可以直接帮你定位问题。

0