在 Ubuntu 里提到 “trigger 失效”,最常见的是 dpkg/apt 的 trigger 机制 出问题,也可能是 systemd trigger、udev trigger 或 脚本 trigger。下面按常见场景给你排查思路。
trigger 是 Debian/Ubuntu 包管理的一种机制,例如:
fontconfiginitramfsldconfig如果 trigger 没执行,就会出现:
常见于:
apt install 被 Ctrl+C修复:
sudo dpkg --configure -a
sudo apt -f install
查看 trigger 状态:
sudo dpkg --audit
如果看到类似:
triggers awaited
triggers pending
修复:
sudo dpkg --triggers-only --configure -a
有些时候 trigger 被人为禁用:
sudo apt-get install -o DPkg::NoTriggers=true xxx
解决:
sudo apt-get install -o DPkg::Triggers::Pending=1
查看 trigger 定义:
cat /var/lib/dpkg/info/xxx.triggers
如果 trigger 路径或事件名错误,需要:
例如:
Wants=xxx.service
After=xxx.service
但没生效。
排查:
systemctl list-triggers
systemctl status xxx.service
常见原因:
maskConditionPathExists 等)systemctl list-timers
systemctl status xxx.path
systemctl list-timers --all
如果 timer 没跑:
sudo systemctl enable xxx.timer
sudo systemctl start xxx.timer
例如插拔设备没反应。
sudo udevadm trigger
sudo udevadm control --reload
检查规则:
ls /etc/udev/rules.d/
systemctl status cron
查看日志:
grep CRON /var/log/syslog
常见原因:
你可以按顺序执行:
sudo dpkg --audit
sudo dpkg --configure -a
sudo apt -f install
sudo systemctl daemon-reexec
请告诉我:
lsb_release -a
我可以直接帮你定位到具体包或配置。