如何在 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 中显示哪个进程拥有磁盘空间的主要内容,如果未能解决你的问题,请参考以下文章

linux清理磁盘空间

linux下查看磁盘空间占用

linux磁盘空间丢失,如何找回?

linux查看哪个进程占用磁盘IO

怎么查看linux的哪个进程占用磁盘io较多

如何查看Linux磁盘空间大小