计算每个进程的总磁盘空间利用率

计算每个进程的总磁盘空间利用率

我正在寻找最佳方法来确定每个进程消耗了多少磁盘空间。据我所知,摆在我面前的只有一个选择。即从所有过程中获取write_bytes输出并将它们相加。/proc/<pid>/io但后来我发现通过这样做得到的总数与df -h给我的东西不匹配。

答案1

我会使用类似这样的管道:

iotop -qqq -b -Paok -n 2 -d 30 | sort -n -k6 -r | head -n 20

选项:

-qqq:不打印标题和摘要
-b:批处理模式
-P:仅显示进程,而不是所有Therads
-a:累积的I/O
-k:以千字节为单位打印结果
-n 2:运行次数,据我所知,自第一次以来它必须> = 2最后一个不到 1 秒
-d 30:运行之间的延迟,在这种情况下也称为总运行,大约
| sort -n -k6 -r:按第 6 列(总写入)进行数字排序并反转顺序
| head -n 20:仅显示前 20 行

笔记:它仅显示进程已写入的数据量,而不显示已使用的总物理空间。如果一个进程连续写入同一 20KB 的文件,每秒一次,最终会使用 20KB 的空间,但 30 秒内总共写入 600KB。在这种情况下,我将监视我的进程写入的目录,du

答案2

你可以使用奥托普。这将向您显示每个进程的实时磁盘使用情况。假设您使用的是 CentOS/Fedora,您可以这样做。

$ sudo yum install iotop

然后只需调用iotop.

相关内容