我有一个 Linux 服务器,目前的空间使用情况如下:
/dev/sda3 20G 15G 4.2G 78% /
/dev/sda6 68G 42G 23G 65% /u01
/dev/sda2 30G 7.4G 21G 27% /opt
/dev/sda1 99M 19M 76M 20% /boot
tmpfs 48G 8.2G 39G 18% /dev/shm
如你看到的。/
为 78%。我想检查哪些文件或文件夹正在消耗空间。
我试过这个:
find . -type d -size +100M
显示结果如下:
./u01/app/june01.dbf
./u01/app/temp01.dbf
./u01/app/smprd501.dbf
./home/abhishek/centos.iso
./home/abhishek/filegroup128.jar
现在这是我的问题。我只想要位于消耗空间的文件夹中的文件的名称,/
而不是消耗空间的文件夹/u01
或/home
。由于它/
是一切的基础,因此它向我显示了服务器的每个文件。
是否有可能获得占 78% 的大文件/
?
答案1
尝试:
find / -xdev -type f -size +100M
它列出了所有大小大于 100M 的文件。
如果你想了解目录,你可以尝试一下ncdu
。
如果您没有运行 Linux,则可能需要使用-size +204800
或-size +104857600c
,因为M
POSIX 中没有表示兆字节的后缀。
find / -xdev -type f -size +102400000c
答案2
以下命令不仅可以找到文件系统上前 50 个最大的文件 (>100M),还可以sort
按最大的文件进行排序 (GNU):
find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50
-xdev
不要降级其他文件系统上的目录。在 BSD 上
find
使用-x
,这相当于已弃用的-xdev
主版本。
对于所有文件和目录,这甚至更容易:
du -ahx / | sort -rh | head -20
(该标志是限制单个文件系统-x
所需的)du
如果您不使用 GNU sort
(来自coreutils
),请使用不带-h
:
du -ax / | sort -rn | head -20
仅适用于当前目录(为了更快获得结果),替换/
为.
.
答案3
除了 @Gnouc 答案之外,您还可以使用结合exec
选项来获取更多详细信息。您应该有特权这样做。find
ls -la
sudo
$ find / -xdev -type f -size +100M -exec ls -lha {} \; | sort -nk 5
要仅查看千兆字节的文件,请执行以下操作:
root# du -ahx / | grep -E '\d+G\s+'
1.8G /.Spotlight-V100/Store-V2/A960D58E-A644-4497-B3C1-866A529BF919
1.8G /.Spotlight-V100/Store-V2