温馨提示×

linux trigger为何失效

小樊
36
2026-09-29 20:19:02
栏目: 智能运维

在 Linux 下,“trigger 失效”这个说法比较笼统,可能指 systemd trigger、udev trigger、cron trigger、数据库 trigger、或者应用层 trigger。下面我按最常见场景分别说明原因和排查方法,你可以对照看是哪一类。


一、systemd trigger 不生效(最常见)

常见原因

  1. 服务未 enable

    systemctl enable xxx.service
    

    没 enable,trigger 不会自动执行。

  2. trigger 条件不满足

    • Wants= / Requires= 没配
    • After= / Before= 顺序问题
  3. 手动触发方式不对

    systemctl trigger xxx.service   # ❌ 不存在
    

    正确方式:

    systemctl start xxx.service
    systemctl restart xxx.service
    
  4. unit 被 mask

    systemctl is-enabled xxx.service
    

    如果是 masked,trigger 直接失效。

✅ 排查:

journalctl -u xxx.service
systemctl status xxx.service

二、udev trigger 不生效

常见原因

  1. 规则写错路径

    • 规则必须在 /etc/udev/rules.d/
    • 文件名格式:99-xxx.rules
  2. 规则语法错误

    ACTION=="add", SUBSYSTEM=="usb", RUN+="/usr/bin/myscript.sh"
    
  3. 脚本无执行权限

    chmod +x /usr/bin/myscript.sh
    
  4. 没重新加载 udev

    udevadm control --reload
    udevadm trigger
    

✅ 测试:

udevadm test /sys/class/xxx

三、cron trigger 不执行

常见原因

  1. cron 服务没开

    systemctl status cron
    
  2. 环境变量缺失 cron 默认 PATH 很小,脚本要用绝对路径。

  3. 输出无重定向被吞

    * * * * * /root/test.sh >> /tmp/cron.log 2>&1
    

✅ 排查:

grep CRON /var/log/syslog

四、数据库 trigger 失效(MySQL / PostgreSQL)

常见原因

  • INSERT ... IGNORE
  • 批量 LOAD DATA
  • 权限不足
  • trigger 被 disable

✅ MySQL:

SHOW TRIGGERS;

五、你指的是哪种 trigger?

你可以直接告诉我:

  • ✅ systemd / udev / cron / 数据库 / 应用
  • ✅ 具体命令或配置文件
  • ✅ 系统版本(CentOS / Ubuntu / Debian)

我可以帮你精准定位并给修复方案。

0 踩