温馨提示×

能否自定义ubuntu trigger

小樊
48
2026-09-12 13:30:42
栏目: 智能运维

在 Ubuntu(以及一般的 Linux 系统)里,“trigger” 并不是一个单一、统一的概念,它通常出现在不同场景里。先确认你想用的是哪一种,我再给你具体做法。

下面按常见场景说明 是否可以自定义 trigger,以及怎么做。


1. systemd 中的 trigger(最常见)

✅ 可以自定义

Ubuntu 默认使用 systemd,很多“trigger”其实是:

  • timer(定时触发)
  • path 单元(文件/目录变化触发)
  • socket 触发
  • 服务依赖触发

示例 1:定时 trigger(systemd timer)

# /etc/systemd/system/mytask.timer
[Unit]
Description=Run mytask daily

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target
# /etc/systemd/system/mytask.service
[Unit]
Description=My Task

[Service]
ExecStart=/usr/local/bin/mytask.sh

启用:

systemctl enable --now mytask.timer

✅ 完全自定义时间、条件、命令


示例 2:文件变化 trigger(path 单元)

# /etc/systemd/system/watch.conf.path
[Path]
PathModified=/var/log/myapp.log

[Install]
WantedBy=multi-user.target
# /etc/systemd/system/watch.conf.service
[Service]
ExecStart=/usr/local/bin/handle_change.sh
systemctl enable --now watch.conf.path

✅ 文件变更即触发


2. apt / dpkg 的 trigger

✅ 可以(高级用法)

Ubuntu 的 dpkg 支持 package triggers:

interest /usr/lib/myapp/plugins

或:

activate-noawait /usr/lib/myapp/plugins

用于:

  • 软件包安装后自动重建缓存
  • 更新配置

⚠️ 一般只在 打包(deb)开发 中使用,普通用户很少直接改。


3. 内核 / udev trigger

✅ 可以自定义

例如:U 盘插入触发脚本

# /etc/udev/rules.d/99-usb.rules
ACTION=="add", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="vfat", RUN+="/usr/local/bin/usb_insert.sh"
udevadm control --reload

✅ 硬件事件 trigger 完全可控


4. 应用层 trigger(如数据库、CI、监控)

  • MySQL / PostgreSQL:事件调度器(EVENT)
  • GitLab CI / GitHub Actions:webhook / pipeline trigger
  • Prometheus / Alertmanager:alert trigger

这些也都可以自定义,但属于具体应用。


总结

类型 是否可自定义 方式
systemd timer / path ✅ unit 文件
apt / dpkg trigger ✅ deb 包
udev 硬件 trigger ✅ udev rule
应用 trigger ✅ 配置文件

如果你能告诉我:

  • 是 系统启动?定时?文件变化?硬件?软件包?
  • Ubuntu 版本(20.04 / 22.04 / 24.04)

我可以直接给你一份 可复制的配置文件示例。

0 踩