你问的「Linux Trigger」其实不是一个单一的标准命令,而更像是**“在 Linux 上配置触发器”的一类需求。不同场景下配置方式完全不同。下面我按最常见的几种情况**给你说明,你可以对照使用;如果指的是某个具体软件,也可以再告诉我。
systemd 触发器(最常见)# /etc/systemd/system/mytask.timer
[Unit]
Description=Run mytask every hour
[Timer]
OnBootSec=5min
OnUnitActiveSec=1h
[Install]
WantedBy=timers.target
配套 service:
# /etc/systemd/system/mytask.service
[Unit]
Description=My Task
[Service]
Type=oneshot
ExecStart=/usr/local/bin/myscript.sh
启用:
systemctl daemon-reload
systemctl enable --now mytask.timer
查看状态:
systemctl list-timers
systemd 本身不直接支持文件变化触发,但可以配合 inotify / fswatch。
inotifywaitinotifywait -m /data -e create -e modify |
while read path action file; do
echo "$file changed"
/opt/do_something.sh
done
常用于:
CREATE TRIGGER before_user_insert
BEFORE INSERT ON user
FOR EACH ROW
BEGIN
SET NEW.created_at = NOW();
END;
这与 Linux 无关,只是运行在 Linux 上的数据库。
例如 GitLab / Jenkins:
udev 触发器(USB 插入、设备出现)netfilter 触发auditd 事件触发示例(USB 插入触发脚本):
# /etc/udev/rules.d/99-usb.rules
ACTION=="add", SUBSYSTEM=="usb", RUN+="/usr/local/bin/usb_trigger.sh"
| 场景 | 推荐方案 |
|---|---|
| 定时触发 | systemd timer |
| 文件变化触发 | inotify |
| 数据库事件 | SQL Trigger |
| 设备插入 | udev |
| Git 提交 | Webhook / CI |
| 系统事件 | systemd + path |
你可以直接告诉我:
我可以给你一整套可直接复制粘贴的配置方案。