温馨提示×

ubuntu trigger怎么配置

小樊
32
2026-07-22 11:36:01
栏目: 智能运维

在 Ubuntu 里并没有一个叫 “trigger” 的通用命令,这个词通常出现在 systemdudevcroninotify/fswatch 等场景中。下面我按最常见的几种“trigger”用法给你说明,你可以对照看看你指的是哪一种。


一、systemd trigger(最常见)

1️⃣ systemd 定时器(timer)作为 trigger

这是 Ubuntu 上最标准的 trigger 方式,用来定时或事件触发服务。

示例:每分钟触发一次服务

服务文件

# /etc/systemd/system/mytask.service
[Unit]
Description=My Task

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

定时器文件

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

[Timer]
OnBootSec=5min
OnUnitActiveSec=1m

[Install]
WantedBy=timers.target

启用并启动:

sudo systemctl daemon-reload
sudo systemctl enable --now mytask.timer

查看状态:

systemctl list-timers

二、udev trigger(硬件事件触发)

当你插入 USB、硬盘等硬件时触发脚本。

示例:U 盘插入触发脚本

# /etc/udev/rules.d/99-usb.rules
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]1", RUN+="/usr/local/bin/usb_trigger.sh"

重新加载规则:

sudo udevadm control --reload

手动触发测试:

sudo udevadm trigger

三、cron trigger(定时触发)

示例:每天 8 点触发

crontab -e
0 8 * * * /usr/local/bin/mytask.sh

四、inotify / fswatch(文件变化 trigger)

使用 inotifywait

sudo apt install inotify-tools
inotifywait -m /data -e create -e modify |
while read dir event file; do
    echo "$file changed"
done

五、如果你指的是“trigger”这个词本身

1️⃣ systemctl trigger(不存在)

systemd 没有 trigger 子命令,只有:

systemctl start
systemctl restart
systemctl reload

2️⃣ udevadm trigger

这是真实存在的命令:

sudo udevadm trigger --type=devices

六、我需要你确认一下 ✅

你可以直接回答下面任意一个:

  1. 你是想 定时触发任务 还是 事件触发
  2. 系统服务 / 脚本 / 硬件 / 文件变化
  3. 你是在看某篇文档里提到 “trigger” 吗?(可以贴原文)

我可以直接给你针对你场景的完整配置示例

0