你提到的 “CentOS trigger 不执行” 这个说法比较模糊,我先按最常见的几种场景来解释,你看看你指的是哪一种,或者直接补充你的具体用法(systemd / yum / cron / inotify / 自定义脚本等)。
trigger 不是“立即执行”
systemctl trigger 只是重新应用 udev/单元规则,不会主动启动服务disabled,trigger 不会启动它单元没有 WantedBy 或 RequiredBy
[Install]
WantedBy=multi-user.target
没 enable 过,trigger 不会生效
条件不满足
ConditionPathExists=
ConditionKernelCommandLine=
条件为假,trigger 直接跳过
被 mask 了
systemctl is-enabled xxx.service
# masked
✅ 排查命令:
systemctl status xxx.service
journalctl -u xxx.service
systemctl cat xxx.service
trigger 写在其他包里
%triggerin、%triggerun 是针对“另一个包”触发的包没真正安装/卸载
--nodeps 可能跳过 trigger写错 trigger 语法
%triggerin -- package_name
✅ 检查:
rpm -q --scripts package_name
环境变量缺失
* * * * * /usr/bin/bash /root/test.sh
脚本无执行权限
chmod +x test.sh
输出没重定向,cron 静默失败
* * * * * /root/test.sh >> /tmp/cron.log 2>&1
SELinux 限制
getenforce
cat /proc/sys/fs/inotify/max_user_watches
systemctl status inotifywait
请告诉我:
journalctl / /var/log)我可以直接帮你精确定位不执行的原因。