我试图找出哪些文件夹占用/分区。我看到大量磁盘空间进入 jenkins 目录
sudo du -sh /home/jenkins
289G /home/jenkins
当我检查 jenkins 目录文件夹时,我得到最大的文件夹是:
sudo du -sh /home/jenkins/*
137G /home/jenkins/jobs
而其余的文件夹都比较小,几十K/M.../home/jenkins下总共有50个文件夹。
我怎样才能找到谁“吃掉”了这个空间?
谢谢
答案1
sudo du -sh /home/jenkins
和之间的区别sudo du -sh /home/jenkins/*
在于,在几乎所有 shell 中(使用默认设置),*
不包括隐藏文件或目录。隐藏意味着以句点开头的名称(例如,如果有/home/jenkins/.temp/
,则不会包含在第二个 中du
)。
因此,您似乎拥有大约 289-137=152 GiB 的隐藏文件。找出它们在哪里的最简单方法是这样的:
sudo du -m /home/jenkins | sort -nr | less
去掉-s
will make 会du
向您显示所有内容所在的子目录,这听起来像是您想要的。这将包括隐藏的。如果仍然找不到,请添加-a
:
sudo du -am /home/jenkins | sort -nr | less
如果您有一些非常大的隐藏文件,这还会显示单个文件。它可能还需要更长的时间来运行(添加文件通常会大大扩展输出)。
您还可以使用图形前端;就我个人而言,我使用 xdiskusage (但也许只是因为我一直在使用它):
sudo du -am /home/jenkins | xdiskusage -
答案2
使用以下命令查看作业内部
du -sm /home/jenkins/jobs/* |sort -nr
我建议进行反向排序,最大的排在最后,就在新命令行上方,-n
指定数字比较,du 输出设置为始终显示为 MB,以便可以合理地对行进行排序。
编辑:有人建议还添加-a
以du
计算所有文件(包括隐藏文件),但评论已消失?
答案3
使用查找命令:
find /home/jenkins/jobs/ -type f -size +100M -exec ls -lh {} \;
答案4
也许这三个选项结合在一起可以达到您期望的结果:
-s, --总结
仅显示每个参数的总计
-c, --总计
产生总计
-h, --人类可读
采用人类可读格式的打印尺寸(例如,1K 234M 2G)
linus@host: / $ sudo du -sch *
9,8M bin
362M boot
4,0K cdrom
12K dev
32K docker
170M etc
9,5G data
36G home
0 initrd.img
0 initrd.img.old
2,9G lib
4,4M lib64
16K lost+found
84G media
12K mnt
1,1G opt
du: cannot access ‘proc/6836/task/6836/fd/4’: No such file or directory
du: cannot access ‘proc/6836/task/6836/fdinfo/4’: No such file or directory
du: cannot access ‘proc/6836/fd/4’: No such file or directory
du: cannot access ‘proc/6836/fdinfo/4’: No such file or directory
0 proc
19M root
du: cannot access ‘run/user/1000/gvfs’: Permission denied
1,7M run
13M sbin
4,0K srv
0 sys
52K tmp
7,5G usr
14G var
0 vmlinuz
0 vmlinuz.old
154G total