监控文件变化+处理文件访问

监控文件变化+处理文件访问

我想查看我的应用程序服务器文件夹中发生的情况,即进程 x 更改了哪些文件或*.war在过去 x 分钟内更改(替换/创建)了哪些文件。

Linux 中有没有工具可以帮助解决这个问题?

答案1

Strace(如上所述)是检查指定运行软件的操作的一种方法。

某些命令watch find dir/ -mmin 1也可能有助于检查某些目录中过去一分钟的更改。

取决于您到底要寻找什么,inotify 工具可能是这里的另一种贸易工具。

例如,inotifywait -mr dir/监视给定目录中的更改,并立即向您提供任何尝试打开/读取/写入/关闭文件的应用程序的反馈。但是,inotify 不会向您提供有关哪个应用程序或进程正在访问该文件的反馈 - 这是 strace 所做的事情。

请注意,系统级监控通常对于在某些应用程序容器环境中运行的 java 软件的用途有限,因为您只能看到容器(例如 Tomcat),而看不到与系统交互的实际应用程序(例如 .war)。

答案2

根据您的具体需求,您可能需要研究inotify和/或FAM/伽明解决方案。

答案3

您可以通过以下方式获取有关进程访问哪些文件的信息拉索夫:

 lsof -n -p `pidof your_app`

反之亦然,您可以获得写入/读取某个文件的进程的 pid:

 lsof -n -t file

答案4

watch find dir/ -mmin 1对我来说不起作用,所做的只是复制和比较:

cp -r dir /tmp/olddir
# initialize/whatever
diff -r dir /tmp/olddir

它相当消耗资源,但它显示了快照和diff时间之间的所有变化。

相关内容