尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

lsof 命令使用参数

lsof 命令使用参数
📅 发布时间:2026/7/7 18:04:10

除了排查“已删除未释放文件”(+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 或函数,提升应急响应效率。加粗样式

相关新闻

  • 食堂采购系统源码解析:核心功能设计与技术实现
  • PW7126+PW80N03*2三串锂电池充放电保护板方案,持续7A,过流保护10A
  • 5大核心优势解析:为什么ImageGlass是现代Windows图片浏览的终极解决方案?

最新新闻

  • FalconFS实战教程:从零开始构建AI训练存储环境的完整步骤
  • STM32G431与TB6593FNG直流电机控制方案详解
  • openEuler安全加固工具高级功能:IMA完整性度量配置详解
  • 计算机Java毕设实战-基于前后端分离的线上食堂点餐系统的设计与实现 基于 SpringBoot 的餐厅外卖点餐系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 为什么选择mqtt-operator?Kubernetes环境下MQTT服务管理的革命性工具
  • Redisson 4.5 并发控制与缓存系统剖析 — 构建高性能分布式应用

日新闻

  • Android逆向分析全能助手:集成化工具链与自动化工作流设计
  • 面搜索(Faceted Search)原理与工程实践指南
  • 神经网络调参避坑指南:从5个常见Loss曲线形态定位超参数问题

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号