如何在Linux中显示占用磁盘空间的进程

3
我已运行以下命令以确定我的Linux系统上的磁盘空间使用情况。 文件系统 大小 已用 可用 使用率 挂载点 /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/下的文件描述符是实际文件的软链接。

1
"du -k |sort -n"应该能给你一个提示,告诉你去哪里寻找它。 - Fredrik
你可能会喜欢Unix&Linux stackexchange http://unix.stackexchange.com/ - flumpb
2个回答

2

无论是否是原因,您都可以使用lsof查看哪些进程持有已删除的文件。以下类似的内容可能会有所帮助:

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

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

2
您在du命令中使用了*通配符,因此它不会获取以.开头的(隐藏的)目录。例如,可能存在占用空间的.nfs文件,但您的命令将无法获取这些文件。
您还可以使用-c选项告诉du生成总计,而不是使用awk
请改用以下命令:
# cd /export/data/foo
# du -ch . 

这个命令还可以给出所有子目录的大小,这样你就可以找出哪一个占用了更多的空间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接