最常用方法是使用inotify机制,通过inotifywait命令可实时监控文件变化,结合shell脚本能自动响应事件,Python的pyinotify库支持更复杂逻辑,其他工具如tail -f、auditd和rsync+cron适用于特定场景。

在Linux中监控文件变化,最常用的方法是使用inotify机制。它由内核提供支持,能实时捕捉文件或目录的创建、修改、删除等操作。结合命令行工具或编程接口,可以轻松实现监控功能。
使用 inotifywait 命令监控文件
inotifywait 是 inotify-tools 包中的一个实用工具,适合快速查看文件变化。
安装 inotify-tools:
在 Debian/Ubuntu 系统上:
sudo apt-get install inotify-tools
在 CentOS/RHEL 系统上:
sudo yum install inotify-tools 或 sudo dnf install inotify-tools
使用示例:
监控某个目录下的所有变化:
inotifywait -m /path/to/directory 只监控特定事件,比如写入和创建:
inotifywait -m -e modify,create /path/to/directory 递归监控子目录:
inotifywait -m -r -e modify /path/to/directory 持续输出简洁格式:
inotifywait -m –format ‘%T %f %e’ –timefmt ‘%Y-%m-%d %H:%M:%S’ /path/to/file
用 shell 脚本响应文件变化
你可以结合 inotifywait 和脚本,在检测到变化时执行特定操作。
移动端无限滚动加载瀑布流
里面有2个文件夹。其中这个文件名是:finishing,是我项目还没有请求后台的数据的模拟写法。请求后台数据之后,瀑布流的js有一点点变化,放在文件名是:finished。变化在于需要穿参数到后台,和填充的内容都用后台的数据填充。看自己项目需求来。由于chrome模拟器是不允许读取本地文件json的,所以如果你要进行测试,在hbuilder打开项目就可以看到效果啦,或者是火狐浏览器。
92 查看详情
例如,当某个配置文件被修改时自动重启服务:
inotifywait -m -e modify /etc/myapp/config.conf | while read; do
systemctl restart myapp
done
这个循环会一直运行,每次文件被修改都会触发重启命令。
编程方式使用 inotify(Python 示例)
如果你需要更复杂的逻辑,可以用 Python 的 pyinotify 库。
安装 pyinotify:
pip install pyinotify
简单监控脚本:
import pyinotify
class EventHandler(pyinotify.ProcessEvent):
def process_IN_MODIFY(self, event):
print(f”文件 {event.pathname} 已修改”)
wm = pyinotify.WatchManager()
handler = EventHandler()
notifier = pyinotify.Notifier(wm, handler)
wm.add_watch(‘/path/to/file_or_dir’, pyinotify.IN_MODIFY)
notifier.loop()
该脚本会持续监听指定路径的修改事件,并打印提示信息。
其他替代工具
tail -f 日志文件:适用于监控日志追加内容,简单但功能有限。 auditd:系统级审计工具,可监控文件访问、权限变更等,适合安全审计场景。 rsync + cron:定期比对文件快照,适合无 inotify 支持的环境,但不实时。
基本上就这些。inotifywait 最适合日常使用,脚本和编程适合自动化任务,而 auditd 更偏向系统审计。选择哪种方式取决于你的具体需求和环境。
以上就是如何在Linux中监控文件变化?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1173729.html
微信扫一扫
支付宝扫一扫