温馨提示×

linux trigger如何监听

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

在 Linux 里,“trigger 监听”要看你指的是哪一类 trigger,常见有下面几种场景。我分别说明,你对照自己的需求来看。


一、systemd 中的 trigger(最常见)

1️⃣ systemd 定时器(timer)触发服务

这是 Linux 下“定时 trigger”的标准方式。

监听/查看 trigger 是否触发:

systemctl list-timers

示例:

# /etc/systemd/system/backup.timer
[Unit]
Description=Backup Trigger

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target
systemctl enable backup.timer
systemctl start backup.timer

查看触发日志:

journalctl -u backup.timer
journalctl -u backup.service

✅ 特点:

  • 精确时间触发
  • 可监听、可日志
  • 推荐替代 cron

二、inotify(文件/目录变化 trigger)

用于监听文件或目录被修改、创建、删除

1️⃣ 使用 inotifywait

inotifywait -m /data

监听具体事件:

inotifywait -m -e modify,create,delete /data

2️⃣ 脚本示例

inotifywait -m -e close_write /data |
while read path action file; do
    echo "$file changed"
done

✅ 常用于:

  • 配置热加载
  • 日志监控
  • 自动同步

三、udev 触发(硬件事件)

监听 USB / 硬盘 / 设备插拔

1️⃣ 查看 udev 事件

udevadm monitor

2️⃣ 自定义 trigger 规则

# /etc/udev/rules.d/99-usb.rules
ACTION=="add", SUBSYSTEM=="usb", RUN+="/opt/usb.sh"
udevadm control --reload

四、内核 event / netlink trigger

用于底层系统事件(如电源、网络)。

udevadm monitor --kernel --property

或:

evtest /dev/input/eventX

五、如果你说的是“trigger 文件”(sysfs)

某些驱动暴露:

/sys/class/leds/xxx/trigger

查看:

cat /sys/class/leds/xxx/trigger

写入触发:

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

六、我需要你确认的点

请告诉我你指的是哪一种:

  1. ✅ systemd timer 触发
  2. ✅ 文件变化监听(inotify)
  3. ✅ 硬件/设备触发(udev)
  4. ✅ 某个程序里的 “trigger” 概念
  5. ✅ 内核 / 驱动 trigger

我可以直接给你可运行的示例 + 监听方法

0