如何在Linux中显示哪个进程拥有磁盘空间

时间:2012-05-18 15:09:50

标签: linux file handle space disk

我已经运行这些命令来确定Linux系统上的磁盘空间使用情况。

Filesystem Size Used Avail Use% Mounted on /dev/mapper/foovg-foo 326G 202G 108G 66% /export/data/foo

du -sk * | awk '{sum += $1}END{print sum}' 132161064~126GB

所以,202G - 126G = 76G差异。

76G磁盘空间在哪里? 如何找出保存文件句柄的进程?
删除的文件名是什么?

在Linux中,/proc/pid/fd/下的文件描述符是指向实际文件的软链接。

2 个答案:

答案 0 :(得分:2)

无论是否是原因,您可以使用lsof查看哪些进程占用了已删除的文件。这样的事情可能会有所帮助:

lsof | grep '(deleted)$' | sort -rnk 7

换句话说,抓取所有已删除的文件,并按大小按降序排序。

答案 1 :(得分:2)

您在du命令中使用*通配符,因此它不会选择以.开头的(隐藏)目录。例如,可能有.nfs个文件占用空间,您的命令将无法获取。

您还可以使用-c选项告诉du生成总数,而不是使用awk

请改用以下命令:

# cd /export/data/foo
# du -ch . 

此命令还将为您提供所有子目录的大小,以便您可以找到哪个子目录占用更多空间。