温馨提示×

linux trigger怎么用

小樊
37
2026-09-02 15:31:07
栏目: 智能运维

在 Linux 里,“trigger” 这个词可能出现在不同场景里,含义不完全一样。下面按常见情况给你说明:


1. systemd 中的 trigger(最常见)

1.1 systemctl trigger

用于手动触发一次 udev 设备或单元的处理

# 触发所有设备的 uevent(常用于热插拔后)
sudo udevadm trigger

# 或
sudo systemctl trigger

常见用途:

  • 插入硬件后系统没识别
  • 修改 udev 规则后重新加载
# 重新加载 udev 规则并触发
sudo udevadm control --reload
sudo udevadm trigger

1.2 systemd 定时器(timer)触发服务

systemd 本身没有“trigger 命令”,而是通过:

  • .timer 定时触发
  • WantedBy / Requires 依赖触发

示例:

# 立即触发一次服务
sudo systemctl start myjob.service

2. udev 规则中的 trigger(ACTION == “trigger”)

/etc/udev/rules.d/ 中:

ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/local/bin/my.sh"

当设备 add 时自动触发脚本。

手动触发:

sudo udevadm trigger --subsystem-match=block

3. inotify(文件变化触发)

如果你说的是“文件变化 trigger 脚本”:

# 安装
sudo apt install inotify-tools

# 监听文件变化
inotifywait -m /path/to/file | while read event
do
    echo "triggered"
done

4. 数据库 / 程序里的 trigger(如 MySQL)

Linux 本身没有“数据库 trigger 命令”,例如 MySQL:

CREATE TRIGGER before_insert
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
   SET NEW.created = NOW();
END;

5. 你可能想问的“触发器脚本”

如果你只是想:某个事件发生时自动执行脚本,常见方案:

  • systemd service + timer
  • udev rule
  • cron
  • inotify

如果你能补充一下:

  • systemd / udev / 脚本 / 数据库
  • 想实现什么效果?

我可以给你更精确的示例。

0