在 Ubuntu(以及一般的 Linux 系统)里,“trigger” 并不是一个单一、统一的概念,它通常出现在不同场景里。先确认你想用的是哪一种,我再给你具体做法。
下面按常见场景说明 是否可以自定义 trigger,以及怎么做。
Ubuntu 默认使用 systemd,很多“trigger”其实是:
# /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
✅ 完全自定义时间、条件、命令
# /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
✅ 文件变更即触发
Ubuntu 的 dpkg 支持 package triggers:
interest /usr/lib/myapp/plugins
或:
activate-noawait /usr/lib/myapp/plugins
用于:
⚠️ 一般只在 打包(deb)开发 中使用,普通用户很少直接改。
例如: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 完全可控
这些也都可以自定义,但属于具体应用。
| 类型 | 是否可自定义 | 方式 |
|---|---|---|
| systemd timer / path | ✅ | unit 文件 |
| apt / dpkg trigger | ✅ | deb 包 |
| udev 硬件 trigger | ✅ | udev rule |
| 应用 trigger | ✅ | 配置文件 |
如果你能告诉我:
我可以直接给你一份 可复制的配置文件示例。