温馨提示×

ubuntu trigger怎么写脚本

小樊
52
2026-10-03 16:52:52
栏目: 智能运维

在 Ubuntu 里,“trigger(触发器)”通常不是某一种固定文件,而是根据使用场景不同,写法不一样。下面我按最常见的几种情况给你示例,你对照自己的需求选。


一、systemd 定时器(最常见:定时 / 事件触发脚本)

1️⃣ 写一个被触发的脚本

sudo nano /usr/local/bin/my-script.sh

内容:

#!/bin/bash
echo "$(date) trigger run" >> /var/log/my-trigger.log

赋予执行权限:

sudo chmod +x /usr/local/bin/my-script.sh

2️⃣ 写 service(被 trigger 执行的内容)

sudo nano /etc/systemd/system/my-trigger.service
[Unit]
Description=My Trigger Script

[Service]
Type=oneshot
ExecStart=/usr/local/bin/my-script.sh

3️⃣ 写 timer(触发器)

sudo nano /etc/systemd/system/my-trigger.timer

定时触发(每天 3 点)

[Unit]
Description=Run my script daily

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

[Install]
WantedBy=timers.target

启用:

sudo systemctl enable --now my-trigger.timer

查看:

systemctl list-timers

二、文件变化触发(inotify / entr)

安装工具

sudo apt install inotify-tools

脚本示例(文件改动就触发)

#!/bin/bash
inotifywait -m /data -e modify |
while read path action file; do
    /usr/local/bin/my-script.sh
done

三、udev 触发(USB / 硬件插入)

sudo nano /etc/udev/rules.d/99-usb-trigger.rules
ACTION=="add", SUBSYSTEM=="usb", RUN+="/usr/local/bin/my-script.sh"

重新加载:

sudo udevadm control --reload

四、cron(最简单定时 trigger)

crontab -e
0 3 * * * /usr/local/bin/my-script.sh

你可以告诉我:

  • ✅ 是定时触发还是事件触发?
  • ✅ 触发什么?(脚本 / 服务 / 命令)
  • ✅ Ubuntu 版本?

我可以直接帮你写完整可运行的一套文件。

0 踩