Joh*_*nst 3 linux monitoring io disk-monitoring
我可以使用 iotop 等工具监控 I/O。它允许我确定哪些进程执行了多少 I/O。
现在我想知道这些进程将所有数据写入哪些文件。我该怎么做?
例如,“好吧,我知道 Tomcat 正在执行大量 I/O。它主要从/向哪些文件读取/写入”?
我知道两种获取此类信息的方法。
手动使用lsof
.
好的旧lsof
可以向您显示进程或线程正在访问哪些文件,以及一些其他信息。在 中iotop -o
,注意并记下TID
您需要检查的进程或线程的(线程 ID)值。然后关闭iotop
并运行lsof -p [pid/tid]
。如果您需要对输出进行排序,请将其通过管道传输到sort
. 例如,lsof -p [pid or tid] | sort -n -k 7,7 -r
将按照倒序(从大到小)从lsof
第七列 ( SIZE/OFF
)对输出进行排序。
使用fatrace
.
Linux 的这一新增功能类似于inotify
,但它不针对特定文件/目录。它显示了基于被访问的文件聚合磁盘 I/O。根据您的发行版,您可能会或可能不会以预编译的可执行形式访问这个漂亮的小程序。据fatrace
我所知,在其官方存储库中提供的最古老的发行版是 Ubuntu 12.04。我正在使用的 Debian 7 没有它。