在 Linux 里“监听 trigger”这个说法,取决于你说的 trigger 是哪一类。下面我按常见场景给你梳理,你可以对号入座。
例如:
/sys/class/leds/xxx/trigger
cat /sys/class/leds/xxx/trigger
echo heartbeat > /sys/class/leds/xxx/trigger
trigger 本质是 sysfs 文件,可以用:
inotifywait -m /sys/class/leds/xxx/trigger
watch -n 1 cat /sys/class/leds/xxx/trigger
udevadm trigger
udevadm monitor
更详细:
udevadm monitor --kernel --udev --subsystem-match=usb
例如:
systemctl trigger foo.service
systemctl status foo.service
journalctl -u foo.service -f
或监听 socket:
systemctl list-units --type=trigger
比如某个条件触发脚本
inotifywait -m /path/to/trigger_file
// SIGUSR1 / SIGUSR2
signal(SIGUSR1, handler);
用于内核 → 用户态通知(高级)
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 / 自定义)”
我可以直接给你完整可运行示例。