在 Ubuntu 中定制“Trigger”的可行路径
概念澄清 在 Ubuntu 中并没有一个统一的名为Trigger的内置功能,通常大家把“在特定事件发生时自动执行操作”称为“触发器”。实现方式取决于你的触发源:例如按时间、系统事件、文件系统变化、设备插拔、日志告警等,可分别采用不同的系统组件与工具来定制。
常用触发方式与适用场景
快速上手示例
[Unit]
Description=My Hourly Task
[Service]
Type=oneshot
ExecStart=/usr/local/bin/do_work.sh
[Unit]
Description=Run mytimer.service every hour
[Timer]
OnCalendar=*-*-* *:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now mytimer.timer
inotifywait -m /data -e create -e modify |
while read path action file; do
/usr/local/bin/handle.sh "$path" "$action" "$file"
done
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1234", ATTR{idProduct}=="5678", RUN+="/usr/local/bin/on_usb_add.sh"
sudo udevadm control --reload-rules
sudo udevadm trigger
groups:
- name: example
rules:
- alert: HighErrorRate
expr: |
sum(rate({job="myapp"} |= "ERROR" [5m]))
/
sum(rate({job="myapp"}[5m]))
> 0.05
for: 10m
labels:
severity: page
annotations:
summary: High error rate on {{ $labels.job }}
如何选择与组合
安全与维护建议