如何在 Linux 中显示哪个进程拥有磁盘空间
Posted
技术标签:
【中文标题】如何在 Linux 中显示哪个进程拥有磁盘空间【英文标题】:How To Show Which Process Owns Disk Space In Linux 【发布时间】:2012-05-26 04:15:44 【问题描述】:我已运行这些命令来确定我的 Linux 系统上的磁盘空间使用情况。
Filesystem Size Used Avail Use% Mounted on /dev/mapper/foovg-foo 326G 202G 108G 66% /export/data/foo
du -sk * | awk 'sum += $1ENDprint sum'
132161064 ~ 126GB
所以,202G - 126G = 76G 的差异。
76G的磁盘空间在哪里? 如何找出持有文件句柄的进程? 删除的文件名是什么?
在 Linux 中,/proc/pid/fd/
下的文件描述符是指向实际文件的软链接。
【问题讨论】:
"du -k |sort -n" 应该会提示您去哪里寻找它。 你可能喜欢 Unix&Linux stackexchange unix.stackexchange.com 【参考方案1】:无论是否是原因,您都可以使用lsof
查看哪些进程正在保留已删除的文件。这样的事情可能会有所帮助:
lsof | grep '(deleted)$' | sort -rnk 7
换句话说,抓取所有已删除的文件并按大小降序排列。
【讨论】:
【参考方案2】:您在 du 命令中使用了*
通配符,因此它不会选择(隐藏)以.
开头的目录。例如,可能有 .nfs
文件占用空间,您的命令不会占用空间。
您还可以使用-c
选项告诉du
生成总数,而不是使用awk
。
请改用以下命令:
# cd /export/data/foo
# du -ch .
此命令还将为您提供所有子目录的大小,以便您找到哪个使用更多空间。
【讨论】:
以上是关于如何在 Linux 中显示哪个进程拥有磁盘空间的主要内容,如果未能解决你的问题,请参考以下文章