Linux磁盘空间泄露排查:lsof定位已删除文件与进程句柄管理

Linux磁盘空间泄露lsof命令deleted文件
于 2026-07-07 15:30:38 修改
·本内容遵循CC 4.0 BY-SA版权协议

这类磁盘空间泄露问题,最让人头疼的不是空间满了,而是不知道哪个进程在背后悄悄写文件。lsof 排查的核心思路,不是等空间满了再去找,而是提前锁定那些“已经删除但进程仍占用”的文件句柄。

我一般会先看 //home 分区使用率,如果发现空间持续下降,但 du -sh 查不到大文件,大概率是文件删除后进程没释放。下面按实际排查顺序拆解。

1. 先确认是不是真的“空间泄露”,而不是普通大文件

很多人一看到磁盘空间不足,就急着用 lsof,但第一步其实是排除常规大文件占用。

1.1 用 df 确认分区使用情况

BASH
df -h

重点看 Use% 列,确认是哪个分区空间紧张。如果是 //home 这类系统分区,需要特别小心;如果是数据分区,可能是正常业务写入。

1.2 用 du 逐层定位大文件目录

BASH
# 从根目录开始,按大小排序找前10个占用大的目录
du -sh /* 2>/dev/null | sort -hr | head -10
 
# 如果确定是 /home 分区,直接查 home 下
du -sh /home/* 2>/dev/null | sort -hr | head -10

这个步骤能排除90%的“伪泄露”——其实就是某个日志文件、数据文件或缓存文件正常增长。

1.3 判断是否需要动用 lsof

如果 df 显示使用率很高,但 du 统计的占用远小于 df 结果,基本可以确定是文件删除后进程未释放。这时候才需要 lsof 出场。

2. lsof 排查的核心:找“已删除”文件

lsof 最关键的用法是过滤出状态为 deleted 的文件。这些文件在文件系统里已经看不到,但进程还持有句柄,空间不会释放。

2.1 直接列出所有已删除但未释放的文件

BASH
lsof +L1

+L1 参数表示列出链接计数小于1的文件,通常就是已删除文件。但更直观的写法是:

BASH
lsof | grep deleted

输出示例:

TEXT
java 12345 user 123u REG 253,0 104857600 123456 /var
最低 0.47元/天 开通会员,解锁全文
left
成为会员后, 你将解锁
right
benefits 下载资源随意下
benefits 优质VIP博文免费学
benefits 优质文库回答免费看
benefits 付费资源9折优惠
Linux 系统资源泄露排查:lsof 结合 /proc 恢复 5 类已删除文件
本文聚焦Linux系统中因文件句柄未释放导致的磁盘空间不释放和资源耗尽问题,详解lsof与/proc/[pid]/fd协同定位5类典型泄露场景(日志旋转、临时文件、网络连接、管道、容器卷),涵盖泄露原理、高阶排查技巧、文件恢复方法及自动化监控方案,强调文件描述符生命周期管理与防御性编程实践。
镝不咸
221
Linux命令大全】lsof命令深度解析系统监控故障排查利器
本文深度解析Linuxlsof命令,它是系统监控故障排查的利器。介绍了lsof的工作机制、高级诊断技巧,包括网络连接、文件系统和进程资源分析。还阐述了企业级应用场景、输出格式控制、性能优化技巧,提供常见问题解决方案、安全加固指南及速查手册,给出学习路线资源。
全息架构师
1182
Linux进程管理命令原理故障定位实战
本文深入解析ps、top、kill等核心进程管理命令的底层原理ps本质是读取/proc文件系统;top基于实时采样计算CPU使用率;kill仅发送信号而非强制终止。结合pstack和lsof实现线程级诊断IO瓶颈定位,覆盖容器环境适配、僵尸进程处理、权限限制(ptrace)、文件句柄未释放等典型故障场景,强调字段级理解生产环境安全实践。
weixin_30568591
362
Linux安全排查实战从靶场搭建到入侵检测的完整指南
本文构建可复现的Linux安全靶场环境(如Ubuntu 22.04),预置恶意进程、异常监听、SUID文件、可疑计划任务等典型攻击痕迹,并系统性演示四阶段排查流程系统健康快照、进程与网络深度分析、文件权限精细扫描、用户日志持久化审查;配套决策树指导修复,强调基线对比、证据保全常态化巡检机制,覆盖strace、tcpdump、auditd、rkhunter等关键安全工具。
weixin_36250541
339
技术问题排查:文件路径到系统约束的深度解析
本文系统梳理了技术问题排查中常被忽视的非逻辑层根源,重点涵盖文件系统路径限制(如Windows 260字符限制)、环境配置差异(环境变量、动态库、虚拟环境)、以及系统资源约束(内存OOM、磁盘空间文件描述符限制)。提出四层排查框架最小化复现、环境扫描、增强日志动态追踪(strace/ltrace)、思维切换。强调通过可观测性建设、清单文化工具链理解,将偶然性根因发现转化为可复用的系统性能力。
anqiu4023
290
Linux服务器入侵应急响应从核心流程到实战排查命令详解
本文系统阐述Linux服务器遭入侵后的应急响应全流程,涵盖现场保护、用户认证排查进程与网络连接分析、系统文件异常检测、日志深度挖掘、Rootkit识别等核心环节。强调基于可信工具链、系统基线和集中化日志的标准化操作,提供如ps、netstat、lsof、find、auditd等关键命令的实战用法及规避攻击者篡改的取证技巧,突出证据保全、多维交叉验证事后加固闭环。
442
别再只盯着根目录了!/dev/vda2磁盘爆满,我用这招快速定位并释放了50G空间
本文聚焦Linux系统中因进程异常终止导致的‘僵尸文件’(已删除但仍被占用的文件)引发/dev/vda2分区空间耗尽的问题。详细解析其成因(如Java未关闭流、文件描述符泄漏),介绍df/lsof/ncdu等核心工具定位方法,并提供即时清理、编码规范、监控体系、巡检策略及架构防御五大技术方案,强调在系统运维开发协同中预防磁盘空间隐性泄露
weixin_30251829
123
Linux命令背后的三层隐喻结构:文件、管道权限
本文深入剖析Linux命令设计背后的三大核心隐喻:文件即一切(资源抽象)、管道即网络(进程通信)、权限即契约(访问控制)。通过20个生产级核心命令(如find、tar、vim、grep、strace、journalctl、tcpdump等)的深度解析组合实战,揭示其在故障排查、权限管理、IO分析、日志诊断和网络调试中的底层原理工程实践。强调从语法记忆升维至系统认知,构建覆盖文件系统、系统调用、内核协议的Linux原生思维模式。
weixin_34008933
305
Linux应急响应速查表5分钟快速定位服务器入侵异常
本文提供一套面向安全运维场景的Linux服务器入侵异常快速排查指南,覆盖系统资源快照、进程与网络深度分析、持久化机制检查、文件系统痕迹搜寻及关键日志审计五大核心模块。强调按标准应急流程(检测→分析→遏制)组织命令,突出命令精准性、输出可读性实战顺序性,并指出常见陷阱如被篡改命令、内核级Rootkit及现场污染问题,推荐配套工具如chkrootkit、Volatility和strings等。
weixin_34279579
334
Linux服务器健康诊断top、netstat、du三剑客实战指南
本文深入解析top、netstat(及替代工具ss)和du在Linux服务器健康诊断中的协同应用逻辑。聚焦CPU异常、磁盘空间告警网络连通性故障三大典型场景,强调基于内核数据源的交叉验证方法top定位高负载进程,netstat/ss分析连接状态端口绑定,du精准识别磁盘占用根源。同时澄清内存统计差异、TIME_WAIT本质、dudf偏差等常见误区,并提供轻量、确定、最小依赖的现场排障实践框架。
weixin_34009794
533
Linux服务器挖矿木马应急响应从发现到根除的实战指南
本文系统讲解Linux服务器遭遇挖矿木马后的完整应急响应流程,涵盖异常迹象识别(CPU飙升、可疑网络连接、计划任务篡改)、深度排查进程溯源、文件痕迹、入侵路径分析)、根除操作(进程终止、文件清理、持久化清除)、系统加固(密码重置、服务配置修复、防火墙部署)及自动化辅助工具使用。强调手动分析能力常态化防护体系建设,适用于运维安全人员快速处置生产环境挖矿事件。
dielucuan8830
468
企业数据防泄露:基于终端网络协同的微信QQ文件外发管控方案设计
本文设计了一套基于终端代理网络探针协同的DLP方案,用于管控企业员工通过微信、QQ等即时通讯工具外发敏感文件的行为。方案采用四层架构(采集、分析、策略、审计),融合进程行为监控、私有协议识别、哈希匹配内容深度识别(OCR/NLP/正则),支持实时阻断、审批放行审计溯源。强调终端网络联动、分级识别策略及合规部署实践。
weixin_34184158
420
服务器异常排查:5分钟快速检测Rootkit入侵应急响应指南
本文聚焦服务器Rootkit入侵的快速识别处置,以chkrootkit为核心工具,详解其安装、扫描参数优化及结果解读方法;强调基于命令行为异常、资源占用突增、日志缺失等迹象的初步判断,并辅以手动交叉验证(如ps/netstat对比、/proc检查、SUID文件排查、内核模块审计);最后给出确认入侵后的‘四不’应急原则、取证要点及系统重建加固方案,突出最小干扰、快速取证、深度验证的信息安全响应逻辑。
weixin_34110749
511
Wireshark网络协议分析实战从抓包到故障排查的完整指南
本文系统讲解Wireshark在网络协议分析故障排查中的核心应用,涵盖环境部署(Npcap安装、环回抓包)、捕获/显示过滤器原理实战语法、TCP/IP及HTTP协议深度解析、HTTPS/TLS解密条件限制、典型问题排查案例(访问缓慢、连接重置、广播风暴),以及Tshark命令行、着色规则、IO图表等高级效率技巧,强调底层流量证据在定位网络性能安全问题中的关键作用。
weixin_33694172
555
Linux面试题
本文系统梳理Linux运维核心考点,涵盖基础命令、三剑客日志分析、系统调优、故障排查;深入解析DockerVM差异、K8s Pod生命周期、GitOps原理、Load AverageCPU使用率区别、Service类型、脑裂问题、FD泄露排查、TLS握手、Ansible幂等性、TIME_WAIT优化;并延伸至主流中间件(Redis、ES、Nacos、Prometheus等)高可用、安全加固及性能调优要点。
争做有Y人
611
CentOS 8 用户管理:从 adduser 到 sudo 权限闭环实战
本文深入解析 CentOS 8 用户管理的核心机制,聚焦 adduser、userdel sudo 权限协同配置。重点阐述 UID/GID 基础层 sudoers 策略层的双轨权限模型,wheel 组的双重角色,以及 visudo 语法陷阱、安全删除流程和权限验证黄金三角(id/getent/sudo -l)。涵盖生产环境常见故障如 'sudo: command not found' 和 'error: failed to build wheel' 的根因分析分层排查方法。
weixin_34109408
399
Linux服务器应急响应实战从日志分析到问题定位的完整指南
459
Ubuntu 20.04 交换区配置实战swapfile 创建、调优故障排查
本文详解 Ubuntu 20.04 下 swapfile 的创建、调优故障排查全流程。涵盖 swapfile 替代 swap partition 的优势、fallocate 高效创建原理、swappiness/vfs_cache_pressure 参数优化、fstab systemd 双重挂载保障、常见问题如 vins mono 卡顿/搜狗输入法崩溃/音频失效的根因分析及修复,并延伸至多 swapfile 策略 zram 协同方案,全部基于内核 5.4+ ext4 文件系统实测验证。
612
Ubuntu 20.04 logrotate 配置实战解决日志疯长磁盘占满问题
本文深入解析 Ubuntu 20.04 中 logrotate 的工作机制,强调其依赖 cron 调度而非守护进程,并详解如何为 Nginx 等服务配置生产级日志轮转包括 daily/size 触发、missingok 容错、compress/delaycompress 压缩策略、create 权限设定、sharedscripts postrotate 信号通知等核心指令。同时揭示 dateext 跨日偏差、copytruncate 风险、olddir 跨文件系统失败等关键陷阱,并提供基于 /var/log/syslog 和 /var/lib/logrotate/status 的故障排查路径。
weixin_30617737
347
Ubuntu 14.04用户管理:adduser/delusersudo权限机制深度解析
本文深入剖析Ubuntu 14.04中adduser/deluser命令的底层机制sudo权限框架的协作逻辑。重点涵盖adduser的UID/GID自动分配、家目录初始化、shadow密码加密及sudo组自动加入;deluser的权限剥离式删除策略资源回收边界;sudo setuid位的核心安全作用及其脆弱性。同时提供创建、验证、删除用户的完整实操流程,以及sudo失效诊断、生产环境加固和auditd审计等进阶治理方法。
axfcjwkbi259888707
300
洞察Linux系统使用lsof命令探索打开的文件与端口
`lsof`(list open files)是Linux系统管理中极为关键且功能强大的命令行工具,其核心作用远不止于字面意义上的“列出打开的文件”——在Unix/Linux哲学中,“一切皆文件”,因此`lsof`实质上是一个**全维度系统资源观测器**,能够深度揭示进程与系统资源之间的动态映射关系。它由Victor A. Abell于1980年代末开发,现已成为POSIX兼容系统(尤其是Linux、macOS、FreeBSD等)中系统管理员、安全工程师、运维工程师及故障排查人员不可或缺的诊断利器。其权威性体现在它直接读取内核内存中的VFS(虚拟文件系统)层和socket子系统数据结构(如`struct file`, `struct socket`, `struct inet_sock`),无需依赖用户态日志或代理程序,因而具备极高的实时性、准确性和最小侵入性。从技术原理层面看,`lsof`通过遍历`/proc`伪文件系统实现信息采集每个运行中的进程在`/proc/[pid]/`目录下均暴露其打开的文件描述符(`fd/`子目录)、内存映射(`maps`)、网络连接(`net/`)、环境变量(`environ`)等关键状态。`lsof`会依次扫描所有`/proc/[pid]/fd/`中的符号链接(如`0→/dev/pts/1`, `3→socket:[123456]`),并结合`/proc/[pid]/status`、`/proc/[pid]/cmdline`、`/proc/net/`系列接口(如`tcp`, `tcp6`, `udp`, `udp6`, `unix`)反向解析出文件路径、设备号、inode编号、访问模式(read/write/append)、锁状态(flock/fcntl)、套接字类型(STREAM/SEQPACKET/DGRAM)、协议栈细节(IPv4/IPv6、端口号、本地/远程地址、连接状态如ESTABLISHED/LISTEN/CLOSE_WAIT)等数十项元数据。例如,执行`lsof -i :22`可精准定位所有监听或连接SSH端口(22)的进程及其完整命令行;`lsof -u nginx`可枚举Nginx用户所有打开的配置文件、日志文件、套接字、共享库(`.so`)及临时文件;而`lsof +D /var/log`则能递归扫描整个日志目录下被任何进程占用的文件,对排查日志轮转失败、磁盘空间无法释放等问题具有决定性价值。在系统安全审计场景中,`lsof`是检测隐蔽后门异常行为的核心手段攻击者常通过`execve()`劫持合法进程或注入恶意线程,但其必然要打开网络套接字或敏感文件(如`/etc/shadow`、`/root/.ssh/authorized_keys`)。使用`lsof -i -P -n`(禁用端口名解析主机名解析,提升速度准确性)可快速生成全系统网络连接快照,结合`awk '{print $1,$2,$9}' | sort -u`可识别非标准端口上的可疑监听服务;`lsof -p [PID] -a -d 3-999`可检查某进程是否异常打开了高编号文件描述符(常为隐藏通信通道);而`lsof -w +L1`则专门查找被删除但仍被进程持有的文件(unlinked but held open),此类文件虽在`ls`中不可见,却持续占用磁盘空间并可能泄露敏感数据。在资源占用分析方面,`lsof -n -P | grep -E "(DEL|deleted)" | awk '{print $2}' | sort | uniq -c | sort -nr`可统计各进程导致的已删除文件句柄数,精准定位内存泄漏或日志未关闭根源;`lsof -b +D /home -R`(加`-b`避免阻塞,`-R`显示父进程)则可用于评估用户主目录下被长期锁定的大型文件(如数据库文件、虚拟机镜像),为存储优化提供依据。更进一步,`lsof`支持高度定制化的过滤语法`-c`按命令名匹配(`lsof -c python`)、`-t`输出纯PID便于管道处理(`kill -9 $(lsof -t -i :3000)`强制终止端口3000占用者)、`-s`指定文件状态(`lsof -sTCP:LISTEN`仅显示监听套接字)、`-a`实现逻辑(`lsof -u www-data -iTCP -a -sTCP:ESTABLISHED`)、`+L1`检测符号链接断链、`-Z`显示SELinux上下文(在强制访问控制环境中至关重要)。其输出字段包含COMMAND(进程名)、PID(进程ID)、TID(线程ID,需`-T`选项)、USER(有效用户)、FD(文件描述符,含`cwd`当前工作目录、`rtd`根目录、`txt`可执行文件、`mem`内存映射、`sock`套接字等特殊类型)、TYPE(REG常规文件、DIR目录、CHR字符设备、BLK块设备、FIFO命名管道、IPv4/IPv6/UNIX socket)、DEVICE(主次设备号)、SIZE/OFF(文件大小或偏移)、NODE(inode号)、NAME(路径或网络地址),每一列都承载着深层系统语义。掌握`lsof`不仅是掌握一个命令,更是深入理解Linux内核资源管理机制(VFS抽象层、文件描述符表、socket生命周期、进程地址空间布局)的实践入口。在云原生容器化环境中,`lsof`配合`nsenter`或`docker exec -it lsof`仍可穿透命名空间边界进行深度诊断,其底层能力历经三十年演进而历久弥新,堪称Linux系统可观测性的基石性工具。
原机小子
Linux故障排查使用find命令进行问题定位
![【Linux故障排查使用find命令进行问题定位](https://sobolsoft.com/findfilelength/images/ss.png)# 1. Linux系统故障排查概述在现代信息技术领域,Linux系统凭借其开放源代码、稳定性和安全性等优势,成为了企业服务器和数据中心的首选操作系统。然而,就像任何复杂的系统一样,Linux系统也可能出现故障。当出现系统故障时,有效地进行故障排查是至关重要的。本文将概述Linux系统故障排查的工作流程,重点介绍`find`命令的使用方法和技巧,以及如何利用`find`命令来定位和解决系统中出现的问题。在进行故障排查前,理解
SW_孙维
2023年Linux系统管理员工具包监视磁盘空间和使用情况.doc
资源摘要信息: 本文档《2023年Linux系统管理员工具包监视磁盘空间和使用情况》是一份面向中高级Linux/UNIX系统管理员的实战型技术指南,聚焦于磁盘空间生命周期管理的核心环节——监控、诊断、归因预防。其核心价值不仅在于介绍df、du、find等基础命令的语法用法,更在于构建一套可复用、可扩展、跨平台(兼容Linux、BSD、macOS等类UNIX系统)的磁盘健康运维体系。文档开篇即强调“文件系统未填满”这一看似简单的状态,实则是保障系统稳定性、服务连续性、数据安全性和性能基线的底层基石;一旦根分区(/)或关键挂载点(如/var、/home、/opt)耗尽空间,将直接导致日志写入失败、服务崩溃、数据库拒绝连接、SSH登录异常、甚至内核OOM Killer强制终止进程等连锁故障。因此,磁盘空间管理绝非被动响应式操作,而必须是主动化、指标化、预警化的基础设施治理工程。在技术纵深层面,文档系统性地解构了三大核心命令的协同逻辑高阶技巧df(disk free)作为全局视图入口,不仅提供各文件系统的总容量、已用/可用字节数及挂载点信息,更通过`-h`(人类可读)、`-i`(inode使用率)、`-T`(文件系统类型)、`--output=`(定制字段输出)、`-x`(排除特定类型如tmpfs)等参数实现多维透视;尤其需警惕的是,df显示的“可用空间”受reserved blocks(默认5%为root保留)影响,普通用户可能遭遇“df显示仍有空间但write失败”的现象,此时需结合`dumpe2fs -h /dev/sdXn | grep -i "block count\|reserved"`验证。du(disk usage)则承担细粒度归因分析职责,支持按目录层级递归统计(`du -sh * | sort -hr | head -20`快速定位TOP20大目录),配合`-c`(汇总)、`--max-depth=N`(限制深度)、`-a`(列出所有文件)及`--exclude`实现精准排查;值得注意的是,du统计基于文件实际占用块数,不受硬链接重复计数干扰,但会包含被删除但仍被进程打开的“幽灵文件”(lsof + /proc/*/fd可识别)。find命令则突破静态快照局限,赋能动态策略管控`find /var/log -name "*.log" -mtime +30 -delete`实现日志自动清理;`find /tmp -type f -atime +7 -delete`回收陈旧临时文件;`find /home -size +100M -ls`定位超限用户文件;更可结合-execxargs构造管道化批量操作链。三者组合技如`df -h | awk '$5 > 85 {print $1}' | xargs -I {} sh -c 'echo {}; du -sh /* 2>/dev/null | sort -hr | head -5'`,即可实现“自动发现高危分区→逐级下钻定位罪魁目录”的闭环诊断。文档进一步延伸至企业级治理维度配额(quota)机制通过`quotacheck`、`quotaon`、`edquota`、`repquota`等工具,在ext4/xfs等文件系统上实施用户/组级磁盘限额(block limit)inode限额(file limit),并支持软限(grace period内可临时超限)硬限(绝对禁止写入)双策略;配合`warnquota`可邮件告警,`quota_nld`守护进程支持NFS配额同步。此外,文档隐含推荐了自动化监控范式利用cron定时采集df/du数据写入时间序列数据库(如InfluxDB),通过Grafana构建磁盘使用率趋势图、增长率预测模型及容量预警看板;或采用Prometheus+Node Exporter指标采集方案,基于`node_filesystem_avail_bytes`等指标设置PromQL告警规则(如`1h内增长率>5%/h且剩余空间<10GB`)。对于容器化环境,还需关注overlay2存储驱动的层叠式磁盘占用、Docker Builder缓存膨胀、Kubernetes EmptyDir卷泄露等问题,需叠加`docker system df`、`crictl df`等专用工具。综上,该文档本质是一部融合命令行艺术、系统原理认知、运维哲学思辨自动化工程实践的综合性技术手册,其方法论对构建高可用、可观测、可治理的现代Linux基础设施具有不可替代的指导意义。
平头哥在等你
文件句柄泄露检测指南使用Handle工具发现未释放资源的3个关键信号
SW_孙维
【故障排查与解决】OpenHarmony文件系统问题定位与处理秘籍
SW_孙维
【宿舍管理系统故障排查:定位与解决问题的方法论
SW_孙维
运维常用工具和命令
`lsof` 详解**- **用途**: `lsof` (list open files) 命令列出当前打开的文件。- **应用场景**: 查找哪些进程打开了某个文件或端口,解决文件句柄泄露等问题。
武林战神
1656
任务删除不彻底后果严重:句柄泄漏引发后续异常的5层连锁反应分析
SW_孙维
Linux命令底层原理从权限、路径到进程网络的系统级解析
Jen Lacey
【MySQL故障诊断处理】快速定位并解决‘handshake: reading initial communication packet’
SW_孙维