温馨提示×

linux trigger怎样编写

小樊
40
2026-09-29 20:25:59
栏目: 智能运维

在 Linux 里,“trigger” 这个词可能出现在不同场景,我先按常见情况给你分类说明,你看看你指的是哪一种,我可以再细化。


一、systemd 中的 trigger(最常见)

如果你说的是 systemd 服务/定时器触发,通常不是“写 trigger”,而是:

1️⃣ systemd timer(定时触发)

# /etc/systemd/system/mytask.timer
[Unit]
Description=Run mytask daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target
# /etc/systemd/system/mytask.service
[Unit]
Description=My Task

[Service]
ExecStart=/usr/local/bin/mytask.sh

启用:

systemctl enable --now mytask.timer

2️⃣ 由其他服务触发(path 触发)

# /etc/systemd/system/watch.path
[Path]
PathModified=/var/log/test.log

[Install]
WantedBy=multi-user.target
# /etc/systemd/system/watch.service
[Service]
ExecStart=/usr/local/bin/handle.sh

二、udev 中的 trigger(硬件事件触发)

用于设备插拔触发脚本

# /etc/udev/rules.d/99-usb.rules
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1234", RUN+="/usr/local/bin/usb_hook.sh"

触发:

udevadm trigger

三、Shell 脚本中的“触发条件”

如果只是写脚本逻辑:

if [ "$EVENT" = "start" ]; then
    echo "triggered"
fi

四、内核 / 驱动中的 trigger(高级)

如:

  • request_irq() 中断触发
  • trigger 在 sysfs 中(LED trigger)

示例(LED):

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

五、你可以告诉我

为了给你准确示例,请补充:

  1. 你用的是 systemd / udev / shell / 内核?
  2. 想“触发什么”?(定时 / 文件变化 / 硬件 / 事件)
  3. 是服务器还是嵌入式 Linux?

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

0 踩