0

0

lsof +L1 显示大量 (deleted) 文件占用空间的批量清理脚本

舞姬之光

舞姬之光

发布时间:2026-01-20 15:15:10

|

644人浏览过

|

来源于php中文网

原创

lsof +L1 显示已被删除但仍有进程打开的文件,需通过终止进程或使其释放句柄来清理;可统计占用数、按PID查看详情,并用kill -TERM等安全方式批量处理,辅以日志轮转和监控预防。

lsof +l1 显示大量 (deleted) 文件占用空间的批量清理脚本

lsof +L1 显示的是已被删除但仍有进程打开的文件(即“已删未释放”文件),这些文件仍占磁盘空间,直到对应进程关闭或重启。批量清理的关键不是直接删文件(已删,无法再删),而是终止占用它们的进程或让进程主动释放句柄。

确认哪些进程在占用 (deleted) 文件

先用以下命令查看具体占用情况:

  • lsof +L1 | head -20 —— 查看前20条,关注 PID、COMMAND、SIZE 列
  • lsof +L1 | awk '{print $2}' | sort | uniq -c | sort -nr —— 统计各 PID 占用数量,找“大户”
  • lsof +L1 -p 1234 —— 针对某 PID 查看具体哪些 (deleted) 文件被它持有

安全终止非关键进程(推荐优先尝试)

若确认是日志轮转异常、旧 worker 进程残留等可重启服务,建议发信号让其优雅退出:

Playground AI
Playground AI

AI图片生成和修图

下载
  • kill -HUP PID —— 对支持重载配置的服务(如 nginx、rsyslog),常触发日志 reopen,自动释放 deleted 句柄
  • kill -TERM PID —— 发送终止信号,多数程序会清理后退出
  • 避免直接 kill -9,除非确认无状态且无法响应

批量处理脚本(按占用数阈值自动 kill)

以下脚本仅终止占用 ≥5 个 (deleted) 文件的普通用户进程(排除 root 和系统关键进程),执行前请先测试:

#!/bin/bash
# lsof_deleted_clean.sh —— 安全清理大量 (deleted) 占用
set -e

获取占用 deleted 文件 ≥5 个的非 root、非内核进程 PID(去重)

pids=$(lsof +L1 2>/dev/null | \ awk '$2 ~ /^[0-9]+$/ && $3 != "root" && $1 !~ /^(kthreadd|migration|rcu|watchdog)/ {print $2}' | \ sort | uniq -c | awk '$1 >= 5 {print $2}' | sort -u)

if [ -z "$pids" ]; then echo "No process holding >=5 deleted files found." exit 0 fi

echo "Found PIDs to signal (TERM): $pids" for pid in $pids; do if kill -0 "$pid" 2>/dev/null; then echo "Sending SIGTERM to PID $pid..." kill -TERM "$pid" 2>/dev/null || true sleep 0.3 fi done

等待 2 秒后检查是否释放

sleep 2 remaining=$(lsof +L1 2>/dev/null | wc -l) echo "Remaining deleted-file entries: $remaining"

保存为 lsof_deleted_clean.sh,加执行权限:chmod +x lsof_deleted_clean.sh,运行前建议先加 echo 测试输出。

长期预防建议

  • 应用层:确保日志库(如 logrotate 配合 copytruncate 或 postrotate kill -USR1)正确 reopen 日志文件
  • 容器环境:检查是否挂载了 host 的 /proc 或 /dev/shm,导致容器内进程误持 host 文件句柄
  • 监控项:定期跑 lsof +L1 | wc -l,告警阈值设为 >100
  • 运维习惯:服务更新/重启后,顺手检查 lsof +L1 -p $OLD_PID 是否残留

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

230

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

499

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

498

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

227

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

333

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3510

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

17

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

20

2026.01.13

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

6

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

nginx浅谈
nginx浅谈

共15课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号