Ubuntu 触发器的常见实现与步骤
在 Ubuntu 中,“触发器”通常对应由事件驱动的自动化:按时间触发、按系统事件触发、按文件变化触发、按设备插拔触发等。下面按场景给出可直接执行的步骤与示例。
一 按时间触发
二 按文件系统事件触发
- 使用 inotifywait 实时监听目录/文件变化
- 安装工具:sudo apt-get install inotify-tools
- 编写监控脚本 monitor.sh:
#!/usr/bin/env bash
WATCH_DIR=“/path/to/watch”
inotifywait -m -r -e create,modify,delete --format ‘%w%f’ “$WATCH_DIR” | while IFS= read -r file; do
/path/to/your_action.sh “$file”
done
- 赋权并后台运行:chmod +x monitor.sh && nohup ./monitor.sh &
- 建议将日志输出到文件以便排查(>> /var/log/monitor.log 2>&1)
三 按系统事件或设备插拔触发
四 实践建议与排错要点
- 给脚本加可执行权限:chmod +x /path/to/script.sh;脚本首行使用 #!/usr/bin/env bash;涉及网络/权限的操作按需使用 sudo。
- 统一日志输出与重定向:在脚本或 crontab/systemd 中加入 >> /var/log/xxx.log 2>&1,便于排查。
- 前台调试 inotify 脚本(先去掉 nohup/&),确认事件能被捕获后再后台常驻。
- 使用 Systemd 时记得执行 daemon-reload,并通过 systemctl status/enable/start 管理单元与定时器。
- 避免重复触发:在 inotify 循环内做好去抖/锁文件;在 cron 中避免重叠执行(可用 flock)。