磁盘已满,但找不到大文件或文件夹

磁盘已满,但找不到大文件或文件夹

Ubuntu 服务器显示我使用了几乎所有的磁盘:

Usage of /:   95.5% of 118.12GB

我尝试找到大文件夹和文件,运行ncdu

ncdu 1.8 ~ Use the arrow keys to navigate, press ? for help                                                                                                                                                 
--- / ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    5.5GiB [##########] /root                                                                                                                                                                               
    2.3GiB [####      ] /var
  628.6MiB [#         ] /usr
  209.9MiB [          ] /lib
   28.2MiB [          ] /boot
    8.6MiB [          ] /bin
    7.7MiB [          ] /sbin
    6.6MiB [          ] /etc
  208.0KiB [          ] /run
  112.0KiB [          ] /tmp
   48.0KiB [          ] /opt
e  16.0KiB [          ] /lost+found
    8.0KiB [          ] /dev
    8.0KiB [          ] /media
    4.0KiB [          ] /lib64
e   4.0KiB [          ] /srv
e   4.0KiB [          ] /selinux
e   4.0KiB [          ] /mnt
e   4.0KiB [          ] /home
    0.0  B [          ] /proc
    0.0  B [          ] /sys
@   0.0  B [          ]  initrd.img
@   0.0  B [          ]  vmlinuz

ncdu我使用关于10 GiB-128 GiB它是关于10 %。矛盾的。

如何ubutntu server在不重启的情况下清理我的系统?

我以为这是在ncdu撒谎,于是又用了其他应用程序来查找大文件和文件夹。它们都显示相同的结果ncdu

命令df -h显示磁盘已满。

# df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda       119G  113G     0 100% /
udev            2.0G  8.0K  2.0G   1% /dev
tmpfs           788M  212K  788M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            2.0G     0  2.0G   0% /run/shm

更新

sudo du -sch /*结果:

$ sudo du -sch

8.7M    /bin
29M /boot
8.0K    /dev
6.6M    /etc
4.0K    /home
0   /initrd.img
210M    /lib
4.0K    /lib64
16K /lost+found
8.0K    /media
4.0K    /mnt
48K /opt
du: cannot access `/proc/4470/task/4470/fd/4': No such file or directory
du: cannot access `/proc/4470/task/4470/fdinfo/4': No such file or directory
du: cannot access `/proc/4470/fd/4': No such file or directory
du: cannot access `/proc/4470/fdinfo/4': No such file or directory
0   /proc
5.0G    /root
212K    /run
7.8M    /sbin
4.0K    /selinux
4.0K    /srv
0   /sys
112K    /tmp
629M    /usr
2.3G    /var
0   /vmlinuz
8.1G    total

8.1G 总数与往常一样。但我看到了cannot access几行,可能是它们导致的问题。

然后我检查了 中最大的文件夹/。它是/root

$ sudo du -sch /root

96K /root/Downloads
2.5G    /root/Dropbox
36K /root/nohup.out
4.0K    /root/npm-debug.log
4.0K    /root/readonly
980K    /root/redis-2.6.16.tar.gz
228M    /root/tmp
2.7G    total

答案1

我在我们的实验室机器上遇到了同样的问题并使用了这个命令

du -sch .[!.]* * |sort -h

我能够找到用户垃圾箱内尚未删除的隐藏文件。

归功于这里我最初在哪里找到这个答案。

答案2

检查已删除但仍然由进程保持打开状态的文件:

sudo lsof | grep deleted | less

这将显示 pid 和文件描述符。我在服务器上遇到了同样的问题,除了ncdu磁盘填满之外什么都没有。原来是一个夜间进程,将文件移动到已安装的 samba 共享,并且偶尔没有正确关闭文件句柄,看起来是这样。

如果您发现已删除的文件并想清理它们,最简单的方法可能是重新启动(如果可以接受)。或者您可以尝试终止该进程。或者如果您确定它们没有被使用,您可以手动清空,如下所示:
> /proc/14487/fd/12

答案3

我们也遇到了同样的问题,原来是 docker 镜像,存储在 var/lib/docker 下

ncdu 没有列出这些,因为它们对用户不可见。即使在 sudo 下运行 ncdu 也无济于事。

此命令将清除所有现有的 docker 镜像……

docker rmi $(docker images -a -q)

答案4

以下命令将显示 /home 目录的磁盘利用率--max-depth=1

sudo du -h -d 1 /

手动的

-d--max-depth=N 仅当目录(或文件,使用 --all)在命令行参数以下的级别为 N 或更少时才打印该目录(或文件,使用 --all)的总数;--max-depth=0与 相同--summarize

相关内容