在 Linux 里,“trigger” 这个词可能出现在不同场景,我先按常见情况给你分类说明,你看看你指的是哪一种,我可以再细化。
如果你说的是 systemd 服务/定时器触发,通常不是“写 trigger”,而是:
# /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
# /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
用于设备插拔触发脚本
# /etc/udev/rules.d/99-usb.rules
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1234", RUN+="/usr/local/bin/usb_hook.sh"
触发:
udevadm trigger
如果只是写脚本逻辑:
if [ "$EVENT" = "start" ]; then
echo "triggered"
fi
如:
request_irq() 中断触发trigger 在 sysfs 中(LED trigger)示例(LED):
echo heartbeat > /sys/class/leds/led0/trigger
为了给你准确示例,请补充:
我可以直接给你一份可运行的完整示例。