我想查看我的应用程序服务器文件夹中发生的情况,即进程 x 更改了哪些文件或*.war
在过去 x 分钟内更改(替换/创建)了哪些文件。
Linux 中有没有工具可以帮助解决这个问题?
答案1
Strace(如上所述)是检查指定运行软件的操作的一种方法。
某些命令watch find dir/ -mmin 1
也可能有助于检查某些目录中过去一分钟的更改。
取决于您到底要寻找什么,inotify 工具可能是这里的另一种贸易工具。
例如,inotifywait -mr dir/
监视给定目录中的更改,并立即向您提供任何尝试打开/读取/写入/关闭文件的应用程序的反馈。但是,inotify 不会向您提供有关哪个应用程序或进程正在访问该文件的反馈 - 这是 strace 所做的事情。
请注意,系统级监控通常对于在某些应用程序容器环境中运行的 java 软件的用途有限,因为您只能看到容器(例如 Tomcat),而看不到与系统交互的实际应用程序(例如 .war)。
答案2
答案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
时间之间的所有变化。