当前位置: 首页 > news >正文

lsof 命令使用参数

除了排查“已删除未释放文件”(+L1),lsof作为 Linux 系统管理的“瑞士军刀”,在网络排查、进程分析、设备管理、安全审计等场景中都有不可替代的经典用法。

1.排查文件已删除,空间为释放

lsof+L1-w2>/dev/null|grepdeleted|sort-k7-rn|head-20# lsof:List Open Files,列出当前系统打开的文件。# +L1:这是一个筛选参数,表示列出链接数(Link Count)小于 1 的文件。# -w:禁止截断换行输出,防止长路径截断。

lsof +L1就是专门用来把这些已经被删除、但依然占用磁盘空间的文件找出来的。

COMMAND PIDUSERFD TYPE DEVICE SIZE/OFF NLINK NODE NAME nginx1234root 4w REG253,0155446270995536/var/log/nginx/access.log(deleted)java5678app 10w REG253,0391297111920101454061/tmp/app.log(deleted)
  • (deleted):标记该文件已被删除。
  • NLINK为 0:表示链接数已归零,印证了+L1的筛选条件。
  • SIZE/OFF:显示该文件仍在占用的实际磁盘空间大小,单位byte。

2. 端口占用精准定位(替代 netstat/ss)

当服务启动失败提示Address already in use时,快速找出占用端口的进程。

# 查看谁占用了 8080 端口(推荐加 -nP 禁止解析,速度更快)sudolsof-i:8080-nP# 只查看 TCP 监听状态的端口(排查服务是否正常启动)sudolsof-iTCP-sTCP:LISTEN-nP# 查看某个进程的所有网络连接sudolsof-p1234-i-nP

💡 技巧-n禁止域名反解,-P禁止端口转服务名,两者组合可避免 DNS 查询导致的卡顿,在故障排查时务必加上。

3. 解决 “Device is busy” 无法卸载问题

卸载磁盘或 NFS 挂载点时报错,用lsof找出还在访问该路径的进程。

# 递归扫描 /mnt/data 下所有被打开的文件sudolsof+D /mnt/data# 非递归扫描(仅当前目录,速度更快)sudolsof+d /mnt/data# 直接指定挂载点sudolsof/dev/sdb1

⚠️ 注意+D是递归扫描,数据量大时非常慢;如果明确知道问题在当前层,优先用+d。找到进程后,先尝试kill -HUP或优雅停止,而非直接umount -f

4. 进程资源全透视(调试/性能分析)

分析某个进程打开了哪些文件、库、Socket,判断是否存在句柄泄漏或异常行为。

# 查看 Java 进程打开的所有文件sudolsof-cjava# 统计某进程打开的文件描述符数量(监控句柄泄漏)watch-n1"sudo lsof -p 1234 | wc -l"# 只看普通文件(排除 socket、pipe、mem 等干扰)sudolsof-p1234|awk'$5 == "REG"'# 查看进程的工作目录sudolsof-p1234|awk'$4 == "cwd"'

4. 安全审计与异常连接排查

检查系统是否有可疑外连、挖矿程序或非授权用户活动。

# 查看所有 ESTABLISHED 状态的外连(排查矿池/C2通信)sudolsof-i-sTCP:ESTABLISHED-nP|grep-v'127.0.0.1\|::1'# 查看特定用户的网络连接(审计 www-data/nginx 等低权用户)sudolsof-uwww-data-i-nP# 查找 /tmp 或 /dev/shm 下的可疑可执行文件sudolsof+D /tmp|awk'$5 == "REG" && $NF ~ /\.(sh|py|elf)$/'

5. 文件级操作追踪

确认某个关键文件(如日志、配置、数据文件)正被哪些进程读写。

# 查看谁在写 /var/log/syslogsudolsof/var/log/syslog# 查看 /etc/passwd 是否被异常读取sudolsof/etc/passwd# 批量检查多个文件sudolsof/var/log/nginx/access.log /var/log/nginx/error.log

6. 脚本化集成(仅获取 PID)

在自动化运维脚本中,通常只需要 PID 而不需要完整表格输出。

# 杀掉占用 3306 端口的进程(一行搞定)kill-9$(sudolsof-t-i:3306)# 重启持有某日志文件的进程sudolsof-t/var/log/app.log|xargskill-HUP# 统计每个用户打开的文件数sudolsof-Fu|awk'/^u/{user=$0} /^p/{count[user]++} END{for(u in count) print count[u], u}'|sort-rn

💡-t参数:只输出 PID,无表头、无多余字段,专为管道和脚本设计,是自动化场景的核心选项。

7.使用原则总结

原则说明
必加 sudo普通用户看不到其他进程的 fd,排查结果不完整
必加 -nP网络相关查询默认触发 DNS/服务名解析,生产环境必须禁用
慎用 +D递归扫描 I/O 开销大,优先用精确路径或+d
输出是瞬时快照lsof反映的是执行那一刻的状态,持续监控需配合watch-r N
结合 /proc 验证lsof结果存疑时,直接ls -la /proc/<pid>/fd/是最底层的验证手段

掌握以上场景,基本可以覆盖 90% 以上的 Linux 故障排查和安全审计需求。建议将常用命令保存为 shell alias 或函数,提升应急响应效率。加粗样式

http://www.jsqmd.com/news/1142691/

相关文章:

  • 食堂采购系统源码解析:核心功能设计与技术实现
  • 开启 Harness Engineering 探索之旅
  • PW7126+PW80N03*2三串锂电池充放电保护板方案,持续7A,过流保护10A
  • IRISMAN完整指南:PS3自定义固件玩家的终极游戏管理解决方案
  • 2026最新7款AI编程工具平替实测合集
  • [SQL实战] 对账总是对不上?先把主键、时间口径和异常明细拆出来再查
  • (最新安装包)告别繁琐配置!OpenClaw 一键脚本,轻松搞定本地 AI 自动化
  • PW7126+PW4406A*2三串锂电池充放电保护板方案,持续3A,过流保护4A
  • AI不是代替人,而是把人的价值放大
  • 5大核心优势解析:为什么ImageGlass是现代Windows图片浏览的终极解决方案?
  • 2026平价入门蓝牙耳机选购指南:热门机型选购全指南
  • 一次RSS配置错误引发的百万级乱序事故——深入理解DPDK RSS、Toeplitz Hash、Queue Affinity与Flow一致性(下)
  • 2026毕节黄金回收白银回收铂金回收价格高无损耗专业鉴定本地人常去门店联系方式推荐
  • 2026周口黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • BuildingAI技术解析:开源智能体平台
  • 瘢痕体质总留丑疤?别乱抠,这些坑踩一个悔半年
  • EtherCAT同步机制全解析:从基础模式到DC精准控制
  • 具身智能学习路径:从犹豫到落地的三年能力演进
  • 解锁惠普暗影精灵笔记本性能潜力:OmenSuperHub轻量化控制方案全解析
  • 终极黑苹果配置指南:OpCore Simplify让你30分钟搞定专业级EFI
  • 咳嗽总好不了?别瞎炖梨水!搞反寒热越咳越重
  • python6.5-函数的传参方式
  • 习惯固化+日常强化,崇文高中让优秀成为自然
  • 山东云弈创峰:跨境电商AI智能体的多模态感知与自动化决策架构
  • 清除go-build缓存、关闭占用进程
  • 号总被秒封?个人微信API二次开发如何绕过底层风控与加密探针?
  • Linux 系统管理之云计算概述完整学习笔记(理论 + 私有云实操)
  • 互联网大厂 Java 求职面试:从音视频场景到微服务应用
  • Redis IO 多路复用原理与引入原因深度解析
  • 如何精准识别区域内的校地合作潜力,避免资源浪费与合作乏力?