温馨提示×

如何配置Linux Trigger

小樊
43
2026-08-29 08:45:29
栏目: 智能运维

你问的「Linux Trigger」其实不是一个单一的标准命令,而更像是**“在 Linux 上配置触发器”的一类需求。不同场景下配置方式完全不同。下面我按最常见的几种情况**给你说明,你可以对照使用;如果指的是某个具体软件,也可以再告诉我。


一、如果你想问的是 Linux 系统级触发器(基于事件)

✅ 使用 systemd 触发器(最常见)

1️⃣ 基于 时间触发(类似 cron)

# /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

2️⃣ 基于 事件触发(文件 / 路径变化)

systemd 本身不直接支持文件变化触发,但可以配合 inotify / fswatch


二、如果你想问的是 文件变化触发(inotify)

✅ 使用 inotifywait

inotifywait -m /data -e create -e modify |
while read path action file; do
    echo "$file changed"
    /opt/do_something.sh
done

常用于:

  • 配置文件变更
  • 日志目录监控
  • 自动同步

三、如果你想问的是 数据库 Trigger(Linux 服务器上)

✅ MySQL Trigger 示例

CREATE TRIGGER before_user_insert
BEFORE INSERT ON user
FOR EACH ROW
BEGIN
    SET NEW.created_at = NOW();
END;

这与 Linux 无关,只是运行在 Linux 上的数据库。


四、如果你想问的是 CI/CD 中的 Trigger(如 Git 提交触发)

例如 GitLab / Jenkins:

  • Git push → Webhook
  • Webhook → Jenkins Job
  • Jenkins 在 Linux 上执行脚本

五、如果你想问的是 内核 / 硬件触发(高级)

  • 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

✅ 下一步建议

你可以直接告诉我:

  • 是想 定时执行
  • 还是 文件变化触发
  • 还是 某个软件(如 Jenkins / MySQL / GitLab)
  • 具体 Linux 发行版(Ubuntu / CentOS / Rocky 等)

我可以给你一整套可直接复制粘贴的配置方案

0