当前位置: 首页
系统平台
Linux磁盘空间异常占用排查:删除未释放存储空间怎么查看

Linux磁盘空间异常占用排查:删除未释放存储空间怎么查看

时间:2026-08-14
转载

当你遇到磁盘空间“明明删除了文件却始终没有释放”的问题时,通常直接执行 lsof +L1 就能快速定位原因:输出结果里,NAME 列带有 (deleted) 标记的,就是已经被删除但仍然被进程占用的文件;SIZE OFF 会显示它实际占用了多少字节,PID 和 COMMAND 则对应具体是哪个进程仍

当你遇到磁盘空间“明明删除了文件却始终没有释放”的问题时,通常直接执行 lsof +L1 就能快速定位原因:输出结果里,NAME 列带有 (deleted) 标记的,就是已经被删除但仍然被进程占用的文件;SIZE/OFF 会显示它实际占用了多少字节,PID 和 COMMAND 则对应具体是哪个进程仍在持有该文件。若权限不足,或这条命令没有查到结果,就继续往更底层排查,使用 find /proc/*/fd -ls 2>/dev/null | grep deleted 进一步定位 Linux 中删除未释放导致的磁盘空间异常占用问题。

Linux怎么查看具体的磁盘存储空间由于删除未释放导致的异常占情况

怎么用 lsof 找出已删除但仍在占用空间的文件

当 df -h 显示磁盘空间已满,而 du -sh /* 统计出来的总占用却明显小于已使用空间时,大多数情况下,是文件虽然被 rm 删除了,但对应进程仍然保持着文件描述符未关闭——此时数据块不会被真正释放,磁盘空间就会一直被占着。这类文件在 ls 或 du 中通常完全不可见,因此排查 Linux 磁盘空间未释放问题时,必须借助 lsof 来查找。

执行下面这条命令,就可以列出所有这类“已删除但仍占空间”的幽灵文件:

lsof +L1

输出中通常会看到类似这样的内容:

COMMAND PIDUSER FD TYPE DEVICE SIZE/OFFNODE NAME
ja va 1234app 12w REG253,0 2845678901 1234567 /var/log/app/nohup.out (deleted)

重点关注以下几项:

  • (deleted) 出现在 NAME 列末尾时,就表示该文件已经被删除,但磁盘空间尚未释放
  • SIZE/OFF 列的数值越大,说明这个被占用的已删除文件占据的磁盘空间越多,单位为字节
  • PID 和 COMMAND 可以帮助你确认到底是哪个进程仍在持有它

lsof +L1 没输出但空间仍对不上,怎么办

在某些环境下,比如容器环境、受限权限用户,或者系统对进程信息访问有限制时,lsof +L1 可能因为权限不足而漏掉结果。这种情况下,可以改用更底层、权限要求相对更低的排查方式:

find /proc/*/fd -ls 2>/dev/null | grep deleted

这条命令会直接扫描所有进程的文件描述符目录,只要内核仍然维护着这个句柄,就有机会把它查出来。虽然输出格式更原始,可读性不如 lsof,但在排查 Linux 删除文件后磁盘空间未释放的问题时往往更可靠。常见场景包括:

  • 大量 ja va 或 nginx 进程仍持有 access.log (deleted) 这类已删除日志文件
  • dockerd 持有已经删除的容器日志文件或临时层文件,导致磁盘占用异常
  • 长期运行的脚本(如 nohup ./run.sh &)把 stdout 重定向到一个后来被删除的输出文件

为什么不能只靠 du 和 df 对比就下结论

du 统计的是当前文件系统目录树中“可见路径”下的实际块占用;而 df 统计的是整个文件系统层面的已分配块总量。因此,两者存在差值,并不一定就说明是“文件已删但空间未释放”。在判断 Linux 磁盘空间异常之前,还需要先排除以下几类常见干扰因素:

  • ext4 文件系统默认会为 root 预留 5% 空间:可通过 tune2fs -l /dev/vda1 | grep "Reserved block count" 查询,这部分空间不会显示在 du 结果里,但会计入 df 的 Used
  • 挂载覆盖问题:例如 /mnt/data 原本已有文件,后来又挂载了新的磁盘,旧文件会被遮挡,du 无法扫描到,但底层磁盘空间仍然被占用
  • tmpfs、overlayfs 等内存文件系统或虚拟文件系统,其空间统计逻辑与真实磁盘块分配并不完全一致

因此,建议先执行 df -i 检查 inode 是否已经耗尽,再结合 tune2fs -l 确认是否存在预留空间,最后再把排查重点放到 lsof +L1 上。这样才能更准确地定位 Linux 磁盘空间占用异常的真正原因,避免误判。

释放这类空间,重启进程是最稳妥的做法吗

不一定。重启进程虽然通常最直接,也最容易彻底释放已删除文件占用的磁盘空间,但在生产环境中未必总是可行。相比之下,还有一些更轻量、对业务影响更小的处理方式:

  • 让进程主动重新加载日志,例如 kill -USR1 $(pgrep nginx),很多服务在收到信号后会关闭旧日志文件描述符并重新创建新的日志 fd
  • 手动清空文件内容而不删除句柄:cp /dev/null /proc/1234/fd/12(需要 root 权限,且仅适用于可写 fd)
  • 如果确认占用的是某个日志文件,并且应用支持 logrotate,可以直接执行 logrotate -f /etc/logrotate.d/myapp 强制轮转日志

需要注意的是:echo "" > /proc/PID/fd/N 在部分内核版本或某些文件系统上可能会失败,因此使用 cp /dev/null 往往更稳妥。不过,无论采取哪种方式,在操作之前都应先确认该 fd 对应的服务行为和用途——如果盲目截断,可能会导致日志异常、输出错乱,甚至引发程序运行问题。

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
VMware安装Ubuntu完整教程:创建虚拟机与启动验证

VMware安装Ubuntu完整教程:创建虚拟机与启动验证

本教程详细演示如何在VMware中创建Ubuntu虚拟机,涵盖ISO挂载、硬件配置、安装向导及启动验证。通过清晰的步骤与验证命令,帮助新手快速搭建可用的Linux学习环境。

时间:2026-09-01 16:50
Win10专业版U盘安装教程:制作启动盘与完整安装步骤

Win10专业版U盘安装教程:制作启动盘与完整安装步骤

本文提供Win10专业版U盘安装完整流程:准备8GB以上U盘与官方镜像,制作启动盘并核对盘符;通过F12 F11 Esc等快捷键或BIOS设置U盘为第一启动项;安装时选择专业版并谨慎分区;完成后在“设置—系统—关于”验证版本与激活状态。操作前务必备份数据。

时间:2026-09-01 16:50
Windows10系统字体太小怎么调大

Windows10系统字体太小怎么调大

Windows10系统字体太小怎么调大?只需两步:首先打开设置中的显示选项,将缩放比例调整为125%或150%;随后运行ClearType文本调谐器优化字体清晰度。此方法适用于高分屏及普通屏幕,无需修改注册表即可解决界面拥挤问题。

时间:2026-08-27 15:46
Win10磁盘占用100%基础排查:从监控到清理的完整步骤

Win10磁盘占用100%基础排查:从监控到清理的完整步骤

Windows 10系统出现磁盘占用100%会导致电脑卡顿、程序响应缓慢。本文提供基础排查方案:首先通过任务管理器确认是否为磁盘高负载,随后进入系统存储页面分析C盘占用类别,最后针对性清理临时文件。遵循此流程可有效缓解磁盘压力,避免盲目重装系统。

时间:2026-08-27 15:45
Windows10系统怎么显示此电脑和控制面板

Windows10系统怎么显示此电脑和控制面板

Windows10默认可能不显示桌面图标,导致找不到“此电脑”和“控制面板”。只需进入个性化设置,在“桌面图标设置”中勾选对应选项即可恢复。本文提供详细图文步骤,帮助快速找回系统入口。

时间:2026-08-27 15:45
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全