我正在寻找最佳方法来确定每个进程消耗了多少磁盘空间。据我所知,摆在我面前的只有一个选择。即从所有过程中获取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