温馨提示×

ubuntu trigger怎么创建

小樊
37
2026-07-22 12:32:04
栏目: 智能运维

在 Ubuntu 里没有叫 trigger 的标准命令,所以“创建 trigger”要看你具体指的是哪一类。下面把最常见的几种“trigger”在 Ubuntu 下的创建方式都列出来,你对照一下你用的是哪种场景。


一、如果你指的是 systemd trigger(触发器)

常见说法:Ubuntu trigger、系统级触发任务

✅ 正确理解

systemd 里没有独立叫 trigger 的东西,但可以通过:

  • path 触发器(path unit)
  • timer 触发器(timer unit)
  • 服务依赖触发

来实现“trigger”。


✅ 示例 1:文件出现就触发(path trigger)

比如:/tmp/test.txt 出现时执行脚本

1️⃣ 创建服务

sudo nano /etc/systemd/system/test-trigger.service
[Unit]
Description=Test Trigger Service

[Service]
Type=oneshot
ExecStart=/usr/local/bin/test.sh

2️⃣ 创建 path 触发器

sudo nano /etc/systemd/system/test-trigger.path
[Unit]
Description=Trigger when file appears

[Path]
PathExists=/tmp/test.txt
Unit=test-trigger.service

[Install]
WantedBy=multi-user.target

3️⃣ 启用并启动

sudo systemctl daemon-reload
sudo systemctl enable --now test-trigger.path

✅ 只要 /tmp/test.txt 出现,就会触发服务


二、如果你指的是 cron 定时触发

很多人把 cron 叫 trigger

创建 trigger(定时任务)

crontab -e

示例(每分钟触发一次):

* * * * * /home/user/run.sh

三、如果你指的是 数据库 trigger(MySQL / PostgreSQL)

MySQL 示例

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

四、如果你指的是 udev 硬件 trigger

插入 USB / 设备触发脚本

sudo nano /etc/udev/rules.d/99-my-trigger.rules
ACTION=="add", SUBSYSTEM=="usb", RUN+="/usr/local/bin/usb_trigger.sh"

然后:

sudo udevadm control --reload

五、如果你指的是 APT / dpkg trigger

Ubuntu 软件包机制里的 trigger

cat /var/lib/dpkg/triggers/File

这是高级打包用法,一般不建议手动创建。


✅ 你可以直接告诉我:

  1. 是系统任务?
  2. 是定时执行?
  3. 是文件变化?
  4. 是数据库?
  5. 是某个软件(如 Jenkins / GitLab / Docker)?

我可以直接给你完整可用的示例,不用绕弯子。

0