查找占用磁盘空间的文件或目录

查找占用磁盘空间的文件或目录

我有双服务器,它们由相同的 Google Cloud 镜像组成。 tunnel1我已刷新日志文件,磁盘空间已被收回。 tunnel2我做了同样的事情,但并没有让我收回空间。

我曾尝试使用 手动搜索du,但没有效果。

# du -ah / | sort -n -r | head -n 5
du: cannot access '/proc/6033/task/6033/fd/4': No such file or directory
du: cannot access '/proc/6033/task/6033/fdinfo/4': No such file or directory
du: cannot access '/proc/6033/fd/3': No such file or directory
du: cannot access '/proc/6033/fdinfo/3': No such file or directory
1020K   /usr/lib/git-core/git-daemon
1020K   /usr/lib/git-core/git-credential-cache--daemon
1020K   /lib/modules/4.9.0-6-amd64/kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
1020K   /lib/modules/4.9.0-6-amd64/kernel/drivers/media/usb/dvb-usb
1016K   /usr/lib/google-cloud-sdk/lib/googlecloudsdk/third_party/apis/compute_dev_alpha.json


# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            2.5G     0  2.5G   0% /dev
tmpfs           497M   33M  464M   7% /run
/dev/sda1        15G   12G  2.9G  80% /
tmpfs           2.5G     0  2.5G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.5G     0  2.5G   0% /sys/fs/cgroup

答案1

它不起作用,因为您使用了-h带有 du 的标志,它会将“1024K”之类的值转换为“1M”,并且由于您按数字排序,您会看到 1022K 大于 500M,因为 1022 > 500,所以该单位不感兴趣sort -n

正确的命令应该是这样的

find / -type f -exec du -ahm {} + | sort -n -r | head -n 5

首先,它只搜索文件(find -type f),然后使用blocksize = 1M(-mdu上的-flag)。

答案2

很可能您“刷新”了正在使用的日志。发生这种情况时,磁盘空间看起来已满,因为文件描述符仍在写入。可以通过重新启动处理文件描述符的应用程序进程来解决此问题,就像您遇到的情况一样,您已通过重新启动机器来完成此操作。这就是为什么fuser使用命令来检查哪些文件正在使用的原因。

相关内容