温馨提示×

怎样监听linux trigger

小樊
44
2026-10-11 13:17:02
栏目: 智能运维

在 Linux 里“监听 trigger”这个说法,取决于你说的 trigger 是哪一类。下面我按常见场景给你梳理,你可以对号入座。


一、如果是 内核 / 设备树里的 trigger(如 LED trigger)

例如:

/sys/class/leds/xxx/trigger

1️⃣ 查看当前 trigger

cat /sys/class/leds/xxx/trigger

2️⃣ 切换 trigger

echo heartbeat > /sys/class/leds/xxx/trigger

3️⃣ “监听” trigger 变化

trigger 本质是 sysfs 文件,可以用:

✅ inotify(推荐)

inotifywait -m /sys/class/leds/xxx/trigger

✅ 轮询

watch -n 1 cat /sys/class/leds/xxx/trigger

二、如果是 udev 的 trigger(设备事件)

udevadm trigger

监听 udev 事件

udevadm monitor

更详细:

udevadm monitor --kernel --udev --subsystem-match=usb

三、如果是 systemd 的 trigger(单元触发)

例如:

systemctl trigger foo.service

监听 unit 变化

systemctl status foo.service
journalctl -u foo.service -f

或监听 socket:

systemctl list-units --type=trigger

四、如果是 自定义 trigger(进程 / 脚本触发)

比如某个条件触发脚本

方式 1:文件监听(inotify)

inotifywait -m /path/to/trigger_file

方式 2:信号监听

// SIGUSR1 / SIGUSR2
signal(SIGUSR1, handler);

方式 3:Netlink / 自定义 socket

用于内核 → 用户态通知(高级)


五、如果你说的是 硬件中断 trigger

cat /proc/interrupts

监听某个中断:

watch -n 1 cat /proc/interrupts

或用 perf:

perf stat -e irq:irq_handler_entry

总结速查表

场景 监听方式
LED / sysfs trigger inotifywait
udev trigger udevadm monitor
systemd trigger journalctl -f
文件 trigger inotify
信号 trigger signal()
硬件 trigger /proc/interrupts

如果你能补充一句:

“我指的是 xxx trigger(内核 / systemd / udev / 自定义)”

我可以直接给你完整可运行示例。

0 踩