在 Linux 里,“trigger” 这个词可能出现在不同场景里,含义不完全一样。下面按常见情况给你说明:
systemctl trigger用于手动触发一次 udev 设备或单元的处理。
# 触发所有设备的 uevent(常用于热插拔后)
sudo udevadm trigger
# 或
sudo systemctl trigger
常见用途:
# 重新加载 udev 规则并触发
sudo udevadm control --reload
sudo udevadm trigger
systemd 本身没有“trigger 命令”,而是通过:
.timer 定时触发WantedBy / Requires 依赖触发示例:
# 立即触发一次服务
sudo systemctl start myjob.service
在 /etc/udev/rules.d/ 中:
ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/local/bin/my.sh"
当设备 add 时自动触发脚本。
手动触发:
sudo udevadm trigger --subsystem-match=block
如果你说的是“文件变化 trigger 脚本”:
# 安装
sudo apt install inotify-tools
# 监听文件变化
inotifywait -m /path/to/file | while read event
do
echo "triggered"
done
Linux 本身没有“数据库 trigger 命令”,例如 MySQL:
CREATE TRIGGER before_insert
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SET NEW.created = NOW();
END;
如果你只是想:某个事件发生时自动执行脚本,常见方案:
如果你能补充一下:
我可以给你更精确的示例。