您的当前位置:首页 >域名 >深入解析:用 lsof 揪出“幽灵文件”释放磁盘空间 正文
时间:2025-11-04 21:05:01 来源:网络整理编辑:域名
日常运维中,你是否遇到过这样的情况:明明已经删除了大文件,但磁盘空间却迟迟未释放?du 显示没问题,df 却提示磁盘快满?这背后可能隐藏着一种“幽灵文件”现象。本文将带你深入了解问题根源,并借助lso
日常运维中,幽灵文件你是深入否遇到过这样的情况:明明已经删除了大文件,但磁盘空间却迟迟未释放?解析f揪间du 显示没问题,df 却提示磁盘快满?出释这背后可能隐藏着一种“幽灵文件”现象。本文将带你深入了解问题根源,放磁并借助 lsof 工具快速定位并解决这类疑难问题。盘空

“幽灵文件”(又叫 deleted but open files)是指已经被从文件系统中删除,但依然被某些进程打开着的深入文件。它们不再出现在目录结构中,解析f揪间但因为被进程持有,出释它们的放磁空间不会被释放。
📌 举个例子:你运行了一个程序,盘空它在写一个日志文件 audit.log。幽灵文件某天你为了节省空间直接删除了 audit.log,深入但这个程序并没有关闭文件句柄,解析f揪间导致这部分空间仍然被占用。
复制[root@s-zb-dba02 mnt]# lsof +L1 | grep deleted auditd 6134 root 4w REG 253,0155446270995536 /var/log/audit/audit.log (deleted) .....1.2.3. 问题表现使用 df -h 看到根目录快满:
复制[root@s-zb-dba02 mnt]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 252G 0 252G 0% /dev tmpfs 252G 771M 252G 1% /dev/shm tmpfs 252G 14G 239G 6% /run tmpfs 252G 0 252G 0% /sys/fs/cgroup /dev/mapper/rhel-root 42G 41G 1.2G 98% / ....1.2.3.4.5.6.7.8.而 du -sh /* 却发现加起来没这么多空间:
复制du-sh /* 8G /var 1G /home ... 总计加起来远远小于 42G1.2.3.4.5.这就说明:有空间被“非文件系统中的文件”占用了,也就是云服务器提供商“幽灵文件”!
lsof 是什么?lsof(List Open Files)是 Linux 系统的核心诊断工具,它能列出所有进程打开的文件资源。在 Linux哲学中"一切皆文件"的背景下,lsof 可查看的不仅是常规文件,还包括:
网络套接字(TCP/UDP)管道(PIPE)和 FIFO共享内存设备文件被删除但仍被进程占用的文件基础用法速查:
复制# 查看指定进程打开的文件 $ lsof-p<PID> # 查看指定用户打开的文件 $ lsof-u<username> # 查看指定目录下被打开的文件 $ lsof +D /path/to/dir # 查看指定文件系统的打开文件(推荐排查磁盘空间问题) $ lsof +aL1 <mount-point>1.2.3.4.5.6.7.8.9.10.11.关键参数解析:
+a:AND条件组合+L1:仅显示链接数小于1的文件(即被删除的文件)+aL1:组合条件查找已删除但被占用的文件如何用 lsof 揪出“幽灵文件”?你只需要一条命令,就能找到这些占用磁盘空间的“幽灵文件”:
复制lsof +L1 |grep deleted1.示例输出:
复制COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME auditd 6134 root 4w REG 253,0155446270995536 /var/log/audit/audit.log (deleted) tuned 7696 root 3w REG 253,054912034451806 /var/log/tuned/tuned.log (deleted) rsyslogd 7700 root 5w REG 253,0391297111920101454061 /var/log/messages-20250310 (deleted) rsyslogd 7700 root 6w REG 253,0391297111920101454061 /var/log/messages-20250310 (deleted) rsyslogd 7700 root 7w REG 253,0391297111920101454061 /var/log/messages-20250310 (deleted) rsyslogd 7700 root 8w REG 253,0391297111920101454061 /var/log/messages-20250310 (deleted)1.2.3.4.5.6.7.字段解释:
COMMAND:哪个进程PID:进程 IDFILE:文件类型(txt、mem、网站模板del等)SIZE:文件大小NAME:文件路径(显示 deleted)如何解决?(1) 方法一:重启进程(推荐)
找到对应的 PID,使用如下命令结束它:
复制kill-912341.或者优雅重启进程(推荐):
复制systemctl restart auditd1.注意:重启服务前请确保不影响业务运行!
(2) 方法二:使用 truncate 清空文件
若不能重启,可以通过 proc 文件系统,清空该文件句柄:
复制truncate -s0 /proc/6134/fd/41.其中 6134 是 PID,4 是对应的文件描述符,可在 lsof 结果中找到。
预防措施程序中使用日志轮转(logrotate)+ 信号通知关闭旧句柄。日志定期清理时,建议使用 truncate 而不是 rm。定期巡检系统中被删除但仍然打开的文件: 复制lsof|grep deleted1. 小结“幽灵文件”虽不常见,但一旦出现就很容易造成磁盘空间莫名减少。掌握 lsof,不仅能迅速定位问题,更能为你节省大量排查时间。
记住:删除不等于释放,进程还在引用,就还占空间!服务器租用
电脑耳机如何连接音箱?(一步步教你轻松实现音箱连接)2025-11-04 21:01
Linux自动化运维工具之ansible(一)2025-11-04 20:55
Linux目录结构、Linux分区大小、挂载点和如何分区2025-11-04 20:50
麻了,这让人绝望的大事务提交2025-11-04 20:44
使用U盘进行Win10重装的教程(简单易行的步骤,让你轻松重装系统)2025-11-04 20:32
关于Cookie窃取的运行原理、风险及防御建议2025-11-04 20:15
Linux Shell文本处理工具集锦2025-11-04 19:25
Linux中如何让进程在后台运行2025-11-04 19:23
苹果6s手机质量评测(用心设计,品质保证,苹果6s手机的优势与不足)2025-11-04 19:17
Linux入门时必学文件处理个命令2025-11-04 18:58
手机插U盘使用教程(快速实现手机和U盘的数据传输,让移动存储更便捷)2025-11-04 20:26
让数据库和缓存数据保持一致的三种策略2025-11-04 20:06
从“算力底座”到“生态沃土”:鲲鹏昇腾生态的升维进化2025-11-04 19:53
Nginx百万并发优化:如何提升100倍性能!2025-11-04 19:52
电脑关机提示异常错误,你需要知道的一切!(解决电脑关机异常错误问题,避免数据丢失与系统损坏)2025-11-04 19:50
在shell中使用vi模式2025-11-04 19:00
AI大模型狂飙突进,数据中心架构迎来颠覆性重构2025-11-04 18:51
如何在Ubuntu下安装和配置FTP服务器2025-11-04 18:43
电脑循环风扇机箱安装教程(轻松学习如何正确安装电脑循环风扇机箱)2025-11-04 18:28
揭秘物联网性能优化的终极攻略!提升系统效率的七大法宝2025-11-04 18:23