温馨提示×

为什么centos trigger不执行

小樊
44
2026-10-03 05:18:28
栏目: 智能运维

你提到的 “CentOS trigger 不执行” 这个说法比较模糊,我先按最常见的几种场景来解释,你看看你指的是哪一种,或者直接补充你的具体用法(systemd / yum / cron / inotify / 自定义脚本等)。


一、如果你说的是 systemd trigger(systemctl trigger / 单元触发器)

常见原因

  1. trigger 不是“立即执行”

    • systemctl trigger 只是重新应用 udev/单元规则,不会主动启动服务
    • 如果单元本身是 disabled,trigger 不会启动它
  2. 单元没有 WantedBy 或 RequiredBy

    [Install]
    WantedBy=multi-user.target
    

    没 enable 过,trigger 不会生效

  3. 条件不满足

    ConditionPathExists=
    ConditionKernelCommandLine=
    

    条件为假,trigger 直接跳过

  4. 被 mask 了

    systemctl is-enabled xxx.service
    # masked
    

✅ 排查命令:

systemctl status xxx.service
journalctl -u xxx.service
systemctl cat xxx.service

二、如果你说的是 yum / dnf trigger(rpm %trigger)

常见原因

  1. trigger 写在其他包里

    • %triggerin、%triggerun 是针对“另一个包”触发的
    • 自己装自己不会触发
  2. 包没真正安装/卸载

    • 只升级 --nodeps 可能跳过 trigger
  3. 写错 trigger 语法

    %triggerin -- package_name
    

✅ 检查:

rpm -q --scripts package_name

三、如果你说的是 cron / anacron(定时任务不执行)

常见原因

  1. 环境变量缺失

    • cron 默认 PATH 很小
    * * * * * /usr/bin/bash /root/test.sh
    
  2. 脚本无执行权限

    chmod +x test.sh
    
  3. 输出没重定向,cron 静默失败

    * * * * * /root/test.sh >> /tmp/cron.log 2>&1
    
  4. SELinux 限制

    getenforce
    

四、如果你说的是 inotify / 文件监听 trigger

常见原因

  1. 监听路径不存在
  2. inotify 数量上限
    cat /proc/sys/fs/inotify/max_user_watches
    
  3. 服务没运行
    systemctl status inotifywait
    

五、你需要补充的信息(很重要)

请告诉我:

  1. 你用的是 哪种 trigger(systemd / rpm / cron / 其他)
  2. 相关 配置或脚本内容
  3. CentOS 版本(7 / 8 / Stream)
  4. 报错或日志(journalctl / /var/log)

我可以直接帮你精确定位不执行的原因。

0 踩