如何确定哪个进程正在占用所有可用磁盘空间?

kjo*_*kjo 5 disk-usage

突然间,所有可用磁盘空间/都消失了。

如果我在磁盘中腾出空间(例如,通过删除 ~50GB 的内容),几分钟后我将回到 0 可用磁盘空间(根据df)。

显然,某些进程正在快速消耗磁盘空间,但我无法弄清楚它是什么。

不过有一件事是肯定的:不管它是什么,它肯定会创建许多小文件,因为磁盘上没有大于 10GB 的文件,而且所有大于 1GB 的文件都比今天老得多。

如何找到占用磁盘空间的内容?


FWIW,只df看到问题,而不是du.

例如,下面我将展示从几个“快照” du,并df采取了60年代。分开。(我在磁盘中腾出一些空间后才这样做。)请注意du的输出如何保持稳定(在495G),但df显示可用空间量稳步缩小。(我遵循了这里给出的建议。IOW,/mnt/root指的是/。)

# while true; do du -sh /mnt/root && df -h /mnt/root; sleep 60; done
495G    /mnt/root
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       880G  824G   12G  99% /mnt/root
495G    /mnt/root
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       880G  825G   11G  99% /mnt/root
495G    /mnt/root
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       880G  827G  8.9G  99% /mnt/root
495G    /mnt/root
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       880G  827G  8.1G 100% /mnt/root
495G    /mnt/root
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       880G  828G  7.5G 100% /mnt/root
Run Code Online (Sandbox Code Playgroud)

Rui*_*iro 7

您正在处理已删除的文件,这就是为什么du不注册已用空间而是注册的原因df

删除的文件只有在所有者进程停止后才会消失;它们仍在使用中,而不会发生这种情况。

因此,要找到罪魁祸首的过程,我建议您执行以下操作:

sudo lsof -nP | grep '(deleted)'
Run Code Online (Sandbox Code Playgroud)

然后用于杀死进程。

sudo kill -9 $(lsof | grep deleted | cut -d " " -f4)
Run Code Online (Sandbox Code Playgroud)