温馨提示×

如何调试ubuntu trigger

小樊
33
2026-09-21 21:20:07
栏目: 智能运维

在 Ubuntu 里,“trigger”这个词可能对应几种不同场景,下面我按最常见的几种情况来说明如何调试。你可以先对照看看你指的是哪一种。


一、Systemd Trigger(最常见)

如果你说的是 systemd 的 trigger / 单元触发机制(如 systemctl trigger*.servicepath / timer / socket 触发)

1. 查看 trigger 关系

systemctl list-triggers
systemctl show <unit>.service

查看谁触发了它:

systemctl list-dependencies <unit>.service

2. 手动触发并调试

sudo systemctl start <unit>.service
journalctl -u <unit>.service -f

3. 调试 path / timer trigger

systemctl status <unit>.path
systemctl status <unit>.timer
journalctl -u <unit>.path

开启 debug 日志:

sudo systemctl edit <unit>.service

加入:

[Service]
Environment=SYSTEMD_LOG_LEVEL=debug

二、APT / dpkg Trigger(软件包触发器)

如果你说的是 apt / dpkg 的 trigger(如 apt install 后执行脚本)

1. 查看 trigger

dpkg -L <package> | grep trigger
cat /var/lib/dpkg/triggers/*

2. 手动执行 trigger

sudo dpkg --configure -a
sudo dpkg --triggers-only <package>

3. 调试 trigger 脚本

trigger 通常在:

/var/lib/dpkg/info/<package>.postinst
/var/lib/dpkg/info/<package>.triggers

set -x 调试:

sudo nano /var/lib/dpkg/info/<package>.postinst

在脚本开头加:

set -x

三、Udev Trigger(硬件事件触发)

如果你说的是 udev trigger

1. 手动 trigger

sudo udevadm trigger
sudo udevadm control --reload

2. 调试 udev 规则

sudo udevadm monitor
sudo udevadm test /sys/class/...

四、自定义 Trigger(脚本 / 程序)

如果你自己写了 trigger 逻辑:

  • 加日志:echo "trigger fired" >> /var/log/trigger.log
  • bash -x script.sh
  • strace
strace -f your_trigger_command

五、快速定位你属于哪种

你可以直接告诉我:

  1. trigger 是 系统服务 / 软件安装 / 硬件 / 自写脚本
  2. 报错信息或日志内容(可贴一部分)

我可以按你的具体情况一步步帮你调。

0