在 Linux 系统中查找占用空间较大的文件或目录,有多种方式可以快速定位。以下是常用的几种方法,按从简单到精确的层级列出
一、查看磁盘总体占用情况
df -h
-h 表示以人类可读的形式显示(如 GB、MB)。
输出中可以看到每个挂载点(分区)的使用率。
重点看哪些分区接近 100% 使用率,例如:
/dev/sda3 100G 95G 5G 95% /
说明 / 根目录快满,需要深入排查。
Filesystem Size Used Avail Use% Mounted on devtmpfs 1.8G 0 1.8G 0% /dev tmpfs 1.9G 64K 1.9G 1% /dev/shm tmpfs 1.9G 888K 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/vda1 40G 32G 6.3G 84% / tmpfs 370M 0 370M 0% /run/user/0 overlay 40G 32G 6.3G 84% /var/lib/docker/overlay2/203137e01cce241aed08ed7bc46c881ebaf58ecc984bbd193987890cff2e6908/merged overlay 40G 32G 6.3G 84% /var/lib/docker/overlay2/60d9fcc4e92dede8a55f4972cd94d6e305097c5486c47a2c354dc2e6025a8d02/merged overlay 40G 32G 6.3G 84% /var/lib/docker/overlay2/4137a467083936b2af555eac4006fd7ca1de1216ad2d7fb9c76dacbcaa9c0faa/merged
例如这段输出说明:系统根分区 /dev/vda1 40G,总占用 32G(84%),已经偏高。
同时 /var/lib/docker/overlay2/... 的多层挂载也显示相同的 84%,说明——空间主要是被 Docker 容器(overlay2 层)占用了。
二、初步判断
执行:du -h --max-depth=1 / | sort -hr | head -10

一步步定位 /www 中的“大户”
du -h --max-depth=1 /www | sort -hr | head -20

下一步目标:找出 /www/dk_project 下的大文件或大目录
du -h --max-depth=2 /www/dk_project | sort -hr | head -20

现在结果已经非常明确了:
| 路径 | 占用 |
|---|---|
/www/dk_project/dk_app/dk_jenkins | 14 G |
/www/dk_project/runtime | 22 M |
| 其他目录 | 几乎可忽略 |
结论
空间几乎全部被 Jenkins 占用了。
确切来说,是 Jenkins 的jenkins_home(工作区、构建缓存、日志等)堆积造成的。
一步步清理 Jenkins 占用
① 查看 Jenkins 哪个部分最大
执行:
du -h --max-depth=2 /www/dk_project/dk_app/dk_jenkins/jenkins_home | sort -hr | head -20

② 清理 Jenkins workspace(构建残留)
workspace 是 Jenkins 构建项目时自动生成的临时目录。
查看空间
du -h --max-depth=1 /www/dk_project/dk_app/dk_jenkins/jenkins_home/workspace | sort -hr | head -10

清理旧构建产物(安全)
find /www/dk_project/dk_app/dk_jenkins/jenkins_home/workspace -type d -name "target" -exec rm -rf {} + find /www/dk_project/dk_app/dk_jenkins/jenkins_home/workspace -type d -name "node_modules" -exec rm -rf {} +
如果确定某些项目已不再使用:
rm -rf /www/dk_project/dk_app/dk_jenkins/jenkins_home/workspace/<项目名>
③ 清理 Jenkins 日志
find /www/dk_project/dk_app/dk_jenkins/jenkins_home -type f -name "*.log" -size +100M -exec ls -lh {} \;
若某些日志巨大(例如几 GB):
truncate -s 0 /www/dk_project/dk_app/dk_jenkins/jenkins_home/logs/<大日志文件>
④ 清理 Jenkins 构建历史(可选)
每个 job 会保留很多历史构建记录。
查找大体积 job:
du -h --max-depth=1 /www/dk_project/dk_app/dk_jenkins/jenkins_home/jobs | sort -hr | head -10
如某个 job 特别大,可删除旧构建:
find /www/dk_project/dk_app/dk_jenkins/jenkins_home/jobs/<job名>/builds -maxdepth 1 -mindepth 1 -mtime +10 -exec rm -rf {} +
上例为删除10 天前的旧构建。
清理之后
du -h --max-depth=1 /www/dk_project/dk_app/dk_jenkins/jenkins_home/jobs/ruoyi-fenbushi/builds/ | sort -hr | head -10
显示还是有一部分历史构建存在大文件


找到位置再清除就行了
一键清理脚本(推荐)
保存为 /root/clean_jenkins.sh:
set -euo pipefail
JOB_DIR="/www/dk_project/dk_app/dk_jenkins/jenkins_home/jobs/ruoyi-fenbushi"
WORKSPACE="/www/dk_project/dk_app/dk_jenkins/jenkins_home/workspace/ruoyi-fenbushi"
echo "=== Before cleanup ==="
du -sh "$JOB_DIR" "$WORKSPACE" || true
echo
# 1) 删除 10 天前的旧构建(只删一级 build 目录)
if [ -d "$JOB_DIR/builds" ]; then
echo "Deleting builds older than 10 days under: $JOB_DIR/builds"
find "$JOB_DIR/builds" -mindepth 1 -maxdepth 1 -type d -mtime +10 -exec rm -rf {} +
echo "Done."
echo
else
echo "WARN: $JOB_DIR/builds not found, skip builds cleanup."
echo
fi
# 2) 清理 workspace 中的中间产物(target、node_modules)
if [ -d "$WORKSPACE" ]; then
echo "Cleaning target/node_modules under: $WORKSPACE"
find "$WORKSPACE" -type d \( -name "target" -o -name "node_modules" \) -exec rm -rf {} +
echo "Done."
echo
else
echo "WARN: $WORKSPACE not found, skip workspace cleanup."
echo
fi
# 3) 截断超大的日志文件(>200M)
echo "Truncating large logs (>200M) under: $JOB_DIR"
find "$JOB_DIR" -type f -name "*.log" -size +200M -print -exec truncate -s 0 {} \;
echo "Done."
echo
echo "=== After cleanup ==="
du -sh "$JOB_DIR" "$WORKSPACE" || true
执行:bash /root/clean_jenkins.sh
5万+

被折叠的 条评论
为什么被折叠?



