inotify-tools介绍/安装
1.inotify-tools 简介
背景:Linux 内核提供了
inotify机制,可以在文件或目录发生变化时通知用户空间进程(代替低效的轮询)。inotify-tools:就是一个对 inotify 的封装,提供了命令行工具,主要有两个:
inotifywait:阻塞等待并打印文件系统事件,适合写脚本。inotifywatch:统计某个路径在一段时间内发生的事件次数。
典型应用场景:
- 配置文件变更 → 自动重载服务
- 日志文件更新 → 实时分析或告警
- 代码文件变动 → 自动编译/部署(热加载)
- 批量文件导入监控(例如新文件进目录就处理)
2.安装
大多数 Linux 发行版直接能装:
1 | # Debian/Ubuntu |
源码地址:inotify-tools GitHub
3.使用例子
3.1. 监控目录变动(实时输出)
1 | inotifywait -m -e create,delete,modify /tmp |
-m→ 持续监控(monitor)-e→ 指定事件,这里是创建、删除、修改输出示例:
/tmp/ CREATE new.txt /tmp/ MODIFY new.txt /tmp/ DELETE new.txt
3.2. 阻塞直到某个文件被修改
1 | inotifywait -e modify /etc/nginx/nginx.conf |
👉 很适合自动热加载配置。
3.3. 递归监控目录及子目录
1 | inotifywait -m -r -e modify,create,delete /var/www/ |
-r→ recursive(递归)- 常见于网站项目目录,文件一变就触发。
3.4. 统计事件发生次数(分析用途)
1 | inotifywatch -t 30 -r /var/log/ |
-t 30→ 统计 30 秒-r→ 递归子目录输出类似:
# watches established total modify attrib open close_write ... 100 30 10 20 40
3.5. 脚本化:文件到达目录就处理
1 |
|
👉 常见于数据采集、ETL 前置任务。
4.可监控的事件类型
create→ 新建文件/目录delete→ 删除文件/目录modify→ 文件内容修改move→ 移动文件attrib→ 属性变更(权限、时间戳)close_write→ 写入并关闭
一般用 modify,create,delete 就够了。
🔥 总结:
- inotify-tools 适合轻量场景:简单的监控 + 脚本联动。
- 更复杂的需求:可能要用
systemd.path、fanotify或者写一个守护进程。