在 Ubuntu(以及一般的 Linux 系统)中,“trigger 脚本”并不是某一种固定格式,而通常是指在特定事件发生时自动执行的脚本。常见的“trigger”场景包括:
下面按最常见方式给你讲怎么写和配置。
脚本示例:/usr/local/bin/start-script.sh
#!/bin/bash
echo "System booted at $(date)" >> /var/log/boot-trigger.log
赋予执行权限:
chmod +x /usr/local/bin/start-script.sh
创建 systemd 服务:
sudo vim /etc/systemd/system/my-trigger.service
内容:
[Unit]
Description=My Trigger Script
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/start-script.sh
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl enable my-trigger.service
示例:每天凌晨触发
脚本:
/usr/local/bin/daily.sh
创建 service:
# /etc/systemd/system/daily-trigger.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/daily.sh
创建 timer:
# /etc/systemd/system/daily-trigger.timer
[Unit]
Description=Daily Trigger
[Timer]
OnCalendar=*-*-* 00:00:00
Persistent=true
[Install]
WantedBy=timers.target
启用:
sudo systemctl enable daily-trigger.timer
sudo systemctl start daily-trigger.timer
查看状态:
systemctl list-timers
适合:文件被修改 / 新建 / 删除时执行脚本
安装:
sudo apt install inotify-tools
脚本示例:
#!/bin/bash
inotifywait -m /data -e create -e modify |
while read path action file
do
echo "$file $action" >> /var/log/inotify.log
done
后台运行:
nohup ./watch.sh &
编辑当前用户的 cron:
crontab -e
示例(每分钟执行):
* * * * * /usr/local/bin/test.sh
示例:插入 U 盘执行脚本
规则文件:
sudo vim /etc/udev/rules.d/99-usb-trigger.rules
内容:
ACTION=="add", SUBSYSTEM=="usb", RUN+="/usr/local/bin/usb-trigger.sh"
脚本:
#!/bin/bash
echo "USB plugged" >> /var/log/usb.log
重载规则:
sudo udevadm control --reload
| 场景 | 推荐方式 |
|---|---|
| 开机执行 | systemd service |
| 定时执行 | systemd timer / cron |
| 文件变化 | inotify |
| 硬件事件 | udev |
| 服务状态变化 | systemd unit |
如果你能说明:
我可以直接给你一套可复制的完整脚本 + 配置。