在 Ubuntu 里没有叫 trigger 的标准命令,所以“创建 trigger”要看你具体指的是哪一类。下面把最常见的几种“trigger”在 Ubuntu 下的创建方式都列出来,你对照一下你用的是哪种场景。
常见说法:Ubuntu trigger、系统级触发任务
systemd 里没有独立叫 trigger 的东西,但可以通过:
来实现“trigger”。
比如:当 /tmp/test.txt 出现时执行脚本
sudo nano /etc/systemd/system/test-trigger.service
[Unit]
Description=Test Trigger Service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/test.sh
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
sudo systemctl daemon-reload
sudo systemctl enable --now test-trigger.path
✅ 只要 /tmp/test.txt 出现,就会触发服务
很多人把 cron 叫 trigger
crontab -e
示例(每分钟触发一次):
* * * * * /home/user/run.sh
CREATE TRIGGER before_insert_user
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SET NEW.created_at = NOW();
END;
插入 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
Ubuntu 软件包机制里的 trigger
cat /var/lib/dpkg/triggers/File
这是高级打包用法,一般不建议手动创建。
我可以直接给你完整可用的示例,不用绕弯子。