哪个目录占用的空间最多

哪个目录占用的空间最多

Jenkins 已停止构建,我可以从 df: 看到 /var 已达到最大。接下来我可以看到罪魁祸首是 /var/lib/jenkins

52K     alternatives
...
4.0K    games
2.3G    jenkins   <--this one
4.0K    logrotate.status
...
12M     yum
2.4G    total

然而,当我进入 jenkins dir 查看哪个文件夹消耗了这 2.3GB 的大部分时,出现了一些奇怪的结果:

$ sudo du -csh *
16K     config.xml
0       Connection Activity monitoring to slaves.log
0       Download metadata.log
0       Fingerprint cleanup.log
7.3M    fingerprints
4.0K    hudson.maven.MavenModuleSet.xml
4.0K    hudson.model.UpdateCenter.xml
4.0K    hudson.scm.CVSSCM.xml
4.0K    hudson.scm.SubversionSCM.xml
4.0K    hudson.tasks.Ant.xml
4.0K    hudson.tasks.Mailer.xml
4.0K    hudson.tasks.Maven.xml
4.0K    hudson.tasks.Shell.xml
4.0K    hudson.triggers.SCMTrigger.xml
4.0K    identity.key.enc
4.0K    jenkins.diagnostics.ooom.OutOfOrderBuildMonitor
4.0K    jenkins.model.ArtifactManagerConfiguration.xml
4.0K    jenkins.model.DownloadSettings.xml
4.0K    jenkins.model.JenkinsLocationConfiguration.xml
4.0K    jenkins.mvn.GlobalMavenConfig.xml
4.0K    jenkins.security.QueueItemAuthenticatorConfiguration.xml
160M    jobs
4.0K    nodeMonitors.xml
12K     Out of order build detection.log
41M     plugins
4.0K    proxy.xml
4.0K    queue.xml.bak
4.0K    secret.key
0       secret.key.not-so-secret
32K     secrets
1.1M    updates
8.0K    userContent
12K     users
4.0K    Workspace clean-up.log
209M    total

从2.3GB到209M。谁能解释一下,以便我可以创造一些空间?我已从 Web 前端删除了 Jenkins 工作区,但仍然看到此结果。

答案1

通过这个命令,

sudo du -csh *

您缺少隐藏目录,即*扩展到以除点 ( .) 之外的任何内容开头的所有名称。这意味着所有以点开头的目录名称都不会传递给du命令,并且不会考虑它们的大小。

在大多数情况下,添加.??*参数就可以满足需要:

sudo du -csh .??* *

额外功能.??*扩展到所有以点开头且具有两个以上字符的名称。目标是..从参数中排除 ,即父目录。

假设的文件和目录.a仍然会被错过,而那些以破折号(-)开头的文件和目录最多会被忽略,最坏的情况会触发错误。

如果您的文件或目录名称以破折号开头,或名称以点开头后跟单个字符,则此增强版本将正确报告所有目录大小:

sudo du -csh -- .[^.] .??* *

这里--告诉du我们将以破折号开头的参数作为名称,而不是选项,并将.[^.]所有以点开头的文件和目录添加到处理后的名称中,后跟除点之外的任何单个字符。这包括文件和目录的所有可能名称。

一些 shell 提供了针对这些命名问题的自定义解决方法:

bash:

shopt -s dotglob
sudo du -csh -- *

zsh:

sudo du -csh -- *(D)

ksh93:

FIGNORE='@(.|..)'
sudo du -csh -- *

答案2

不一定是您正在寻找的答案,但值得了解的是:

sudo du -max /var/lib/jenkins | sort -n

这可能是我最常用于此类事情的命令之一。 “-a”包括总目录大小(因此您将在最终输出中看到一个充满小文件的目录作为一个大目录,以及看到所有文件),而 -x 将其保留在一个文件系统中。使用 -m 而不是 -h 可以说更难阅读,但使用固定单位有助于更便携的数字排序(例如,当您没有支持 -h 修饰符的相当新的排序命令时仍然有效)。

答案3

试用NCDU。这是一个基于 ncurses 的类似 mc 的目录浏览器,它可以让您查看哪些目录被占用最多,并可以选择删除您不感兴趣的目录,如以下屏幕截图所示:

在此输入图像描述

答案4

还有一些很好的图形工具可以帮助找出目录中占用大量空间的内容。

我喜欢锉灯它是 KDE 的一部分。这里正在探索/var/缓存在我的电脑上。绿色和黄色与易于,红色的是爪哇,洋红色是构建器

锉灯

内圈是直接子目录,它们在外圈中被分成更小的部分。使用此工具可以非常轻松地浏览并查看占用大量空间的内容 - 不仅是大文件,还包括大量小文件的集合。

相关内容