温馨提示×

如何写ubuntu trigger脚本

小樊
46
2026-09-09 16:06:59
栏目: 智能运维

在 Ubuntu(以及一般的 Linux 系统)里,**“trigger 脚本”**并不是一个官方术语,通常你指的可能是以下几种常见场景之一:


一、Systemd Trigger(最常见)

如果你说的是 “当某个事件发生时自动执行脚本”,一般用 systemd 的 service + path / timer / socket 来实现。

1️⃣ 文件系统变化触发(类似 inotify)

例如:当 /data/incoming/ 有新文件时执行脚本

脚本:

#!/bin/bash
echo "New file detected" >> /var/log/trigger.log

保存为 /usr/local/bin/my-trigger.sh,并:

chmod +x /usr/local/bin/my-trigger.sh

创建 path unit: /etc/systemd/system/my-trigger.path

[Unit]
Description=Watch incoming folder

[Path]
PathExistsGlob=/data/incoming/*
Unit=my-trigger.service

[Install]
WantedBy=multi-user.target

创建 service: /etc/systemd/system/my-trigger.service

[Unit]
Description=Run trigger script

[Service]
ExecStart=/usr/local/bin/my-trigger.sh

启用:

systemctl enable --now my-trigger.path

2️⃣ 定时触发(cron / timer)

如果你只是想“定时执行”:

cron 方式:

crontab -e
*/5 * * * * /usr/local/bin/my-trigger.sh

systemd timer(更现代):

[Timer]
OnCalendar=*:0/5
Unit=my-trigger.service

二、APT Trigger(软件包相关)

如果你是 Ubuntu 软件包开发,APT 有真正的 trigger 机制:

/path/to/package/DEBIAN/triggers

interest /usr/share/myapp

脚本中:

#!/bin/bash
# called by dpkg-trigger

三、Udev Trigger(硬件事件)

例如:U 盘插入触发脚本

/etc/udev/rules.d/99-usb.rules

ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/local/bin/usb-trigger.sh"

四、你具体是哪种需求?

你可以直接告诉我:

  • ✅ 文件变化触发?
  • ✅ 定时触发?
  • ✅ 服务启动触发?
  • ✅ 硬件事件触发?
  • ✅ 软件包安装触发?

我可以给你完整可直接用的示例。

0 踩