在 Ubuntu(以及一般的 Linux 系统)里,**“trigger 脚本”**并不是一个官方术语,通常你指的可能是以下几种常见场景之一:
如果你说的是 “当某个事件发生时自动执行脚本”,一般用 systemd 的 service + path / timer / socket 来实现。
例如:当 /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
如果你只是想“定时执行”:
cron 方式:
crontab -e
*/5 * * * * /usr/local/bin/my-trigger.sh
systemd timer(更现代):
[Timer]
OnCalendar=*:0/5
Unit=my-trigger.service
如果你是 Ubuntu 软件包开发,APT 有真正的 trigger 机制:
/path/to/package/DEBIAN/triggers
interest /usr/share/myapp
脚本中:
#!/bin/bash
# called by dpkg-trigger
例如:U 盘插入触发脚本
/etc/udev/rules.d/99-usb.rules
ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/local/bin/usb-trigger.sh"
你可以直接告诉我:
我可以给你完整可直接用的示例。