如何监视在 Linux 上将大量数据写入哪些文件?

Joh*_*nst 3 linux monitoring io disk-monitoring

我可以使用 iotop 等工具监控 I/O。它允许我确定哪些进程执行了多少 I/O。

现在我想知道这些进程将所有数据写入哪些文件。我该怎么做?

例如,“好吧,我知道 Tomcat 正在执行大量 I/O。它主要从/向哪些文件读取/写入”?

Lar*_*end 5

我知道两种获取此类信息的方法。

  1. 手动使用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)对输出进行排序。

  2. 使用fatrace.
    Linux 的这一新增功能类似于inotify,但它不针对特定文件/目录。它显示了基于被访问的文件聚合磁盘 I/O。根据您的发行版,您可能会或可能不会以预编译的可执行形式访问这个漂亮的小程序。据fatrace我所知,在其官方存储库中提供的最古老的发行版是 Ubuntu 12.04。我正在使用的 Debian 7 没有它。

  • fatrace 很完美。将其放入工具箱中。 (4认同)