如何检测什么占用了磁盘空间

如何检测什么占用了磁盘空间

我已安装外部磁盘/log,但无法再写入数据,因为磁盘已满。当我使用以下命令检查时df -h

Filesystem      Size  Used Avail Use% Mounted on
udev            3.7G   12K  3.7G   1% /dev
tmpfs           748M  384K  748M   1% /run
/dev/xvda1      7.8G  7.4G     0 100% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none            3.7G     0  3.7G   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/xvdb        40G   49M   38G   1% /mnt
/dev/xvdc        40G   38G  4.0K 100% /log

df -i它只有 1%:

Filesystem      Inodes  IUsed   IFree IUse% Mounted on
udev            956199    394  955805    1% /dev
tmpfs           957438    328  957110    1% /run
/dev/xvda1      524288 165951  358337   32% /
none            957438      2  957436    1% /sys/fs/cgroup
none            957438      1  957437    1% /run/lock
none            957438      1  957437    1% /run/shm
none            957438      2  957436    1% /run/user
/dev/xvdb      2621440     11 2621429    1% /mnt
/dev/xvdc      2621440  23593 2597847    1% /log

使用 sudo du -s /log/* |sort -n

4   /log/production.log
16  /log/lost+found
32  /log/redis
240024  /log/linsight
5008628 /log/mongodb

最后,我使用以下命令找不到占用了这么多磁盘空间的内容ncdu /log

    4.8GiB [##########] /mongodb                                                                                                                                                         
  234.4MiB [          ] /linsight
   32.0KiB [          ] /redis
!  16.0KiB [          ] /lost+found
    4.0KiB [          ]  production.log

P/s:我认为这里确实有问题,我 100% 确定那production.log是 GB,但这里只显示 4.0KB。

答案1

du -s /log/* /log/.??*|sort -n将显示占用最多空间的内容,并且您可以对发现较大的子目录重复使用相同的方法以深入调查。

如果文件列表中没有说明磁盘使用情况,则意味着某个程序仍在写入已删除的文件。释放该空间的唯一方法是停止该程序,如果您不知道是什么程序,可以通过重新启动计算机来完成。既然您提到应该production.log更大,那么生成它的进程将是第一个尝试重新启动的进程。

请注意,df -i显示的 inode 使用情况并不反映磁盘空间使用情况,而是反映相对于其文件系统限制的文件数量。

答案2

在 Ubuntu 中,您只需简单执行此操作ls -lh,它就会为您提供可读的结果。

也喜欢这个ls /path/to/tmp -lh

相关内容