linux Command

Linux 查看磁盘空间和大文件命令

Linux 排查磁盘空间占用的常用命令,df -hT 定位满的挂载点,du --max-depth=1 | sort -h 逐层缩小大目录,find -size +500M 找单个大文件,du 与 df 不一致时用 lsof +L1 查已删除但仍被进程持有的文件。

df 看哪个挂载点满,du 看哪个目录大,lsof +L1 查已删除但仍占空间的文件。

适用环境Linux / systemd / Shell
风险等级
最后验证2026-06-30
建议权限普通用户 + sudo

Scenario

什么时候用这组命令

这组命令适合在处理“Linux 查看磁盘空间和大文件命令”时作为第一轮检查模板。使用时先替换占位符,再在目标机器或目标 namespace 中执行,避免在错误环境里得到误导结论。

Input

你需要先准备什么

  • 先确定故障资源:CPU、内存、磁盘、网络、权限、文件句柄还是 systemd 生命周期。
  • 区分当前状态和故障发生时状态,事故恢复后 free/top 可能已经看不出根因。
  • 任何清理或 kill 操作前先记录 PID、命令行、日志和影响范围。

Risk Notes

执行风险

  • 生产上不要在来源未确认时 rm -rf 大目录,应先确认目录用途和影响范围。
  • kill 进程前先确认它属于哪个服务、是否会触发级联重启,优先使用 SIGTERM 而非 SIGKILL。
  • 不要忽略 dmesg 中的 OOM Killer 记录,它往往是应用内存泄漏或配置不当的早期信号。

Commands

命令详解

命令 1: 执行 df

用于补充“Linux 查看磁盘空间和大文件命令”的排查证据链。df 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 1: 执行 df
df -hT

命令 2: 执行 du

用于补充“Linux 查看磁盘空间和大文件命令”的排查证据链。du 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 2: 执行 du
du -xh /var --max-depth=1 2>/dev/null | sort -h

命令 3: 执行 find

用于补充“Linux 查看磁盘空间和大文件命令”的排查证据链。find 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 3: 执行 find
find /var -xdev -type f -size +500M -printf "%s %p\n" 2>/dev/null | sort -n

命令 4: 查看文件句柄或端口

用于确认进程打开了哪些文件、socket 或资源限制。适合定位端口占用、deleted 文件和文件句柄耗尽。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
  • 如果输出为空或权限不足,切换到有权限用户后再判断。
命令 4: 查看文件句柄或端口
sudo lsof +L1

命令 5: 查看 systemd 日志

用于读取 systemd 或内核在故障时间附近记录的真实错误,比 status 摘要更完整。重点看时间、退出码、权限、路径和依赖失败。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
  • 该命令可能有副作用,生产执行前确认影响范围。
  • 如果输出为空或权限不足,切换到有权限用户后再判断。
命令 5: 查看 systemd 日志
journalctl --vacuum-time=7d

Workflow

建议执行顺序

按顺序执行,不要跳过确认类命令

先用只读命令确认状态,再执行会改变状态的命令。df 看哪个挂载点满,du 看哪个目录大,lsof +L1 查已删除但仍占空间的文件。

  • 先用 df 定位满的挂载点。
  • 在对应挂载点内用 du 逐层缩小范围。
  • 用 find 找单个超大文件。
  • du 与 df 不一致时查已删除文件句柄。
  • 清理日志前先确认保留策略和排障需要。
按顺序执行,不要跳过确认类命令
df -hT
du -xh /var --max-depth=1 2>/dev/null | sort -h
find /var -xdev -type f -size +500M -printf "%s %p\n" 2>/dev/null | sort -n

把命令输出变成结论

命令本身不是结论。每次执行后要回答:目标是否存在、状态是否异常、异常是否能解释用户看到的现象。

  • 记录关键字段,而不是整屏复制
  • 把正常路径和异常路径输出对比
  • 输出为空也要解释:是确实没有,还是权限/过滤条件不对
把命令输出变成结论
du -xh /var --max-depth=1 2>/dev/null | sort -h
find /var -xdev -type f -size +500M -printf "%s %p\n" 2>/dev/null | sort -n
sudo lsof +L1

执行前替换占位符并控制影响范围

包含 <service>、<pod>、<namespace>、<pid>、<container> 的命令必须先替换。涉及 reload、restart、KILL、vacuum、prune 的命令要确认影响范围。

  • 优先在测试环境或只读模式验证
  • 生产执行前保留回滚路径
  • 把最终可用命令写入工单或 runbook
执行前替换占位符并控制影响范围
sudo lsof +L1
journalctl --vacuum-time=7d

Verification

怎么判断命令有效

  • 命令已在正确机器、正确用户、正确 namespace 或正确仓库下执行。
  • 输出能支撑明确判断:正常、异常、权限不足、目标不存在或需要下一跳排查。
  • 对有副作用的命令,已确认执行窗口、影响范围和回滚方式。

Prevention

沉淀到日常流程

  • 为关键服务配置日志轮转、资源限制和基础监控,避免等到用户报障才发现问题。
  • 把 systemd unit、timer 和环境文件纳入版本管理,确保所有变更可追溯可回滚。
  • 对清理动作保留可回滚路径,优先移动/截断/轮转,不盲删。
  • 建立系统资源基线监控,一旦 CPU、内存、磁盘或文件句柄超过阈值即可自动告警。

常见问题

为什么 du 总和小于 df 占用?

常见原因是删除文件仍被进程打开,或有挂载点遮挡目录。优先检查 lsof +L1。

Long-tail SEO

你可能正在搜索这些报错

下面这些错误原文、场景词和中英文搜索词,都是排查同类问题时常见的入口。

  • linux 查看磁盘空间
  • df -h 磁盘使用
  • du -sh 目录大小
  • linux 磁盘占用排查
  • du --max-depth 统计
  • linux 清理磁盘空间