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

深入解析`lsof`命令:查看系统中打开文件与进程信息

1、lsof的基本概念

lsof (List Open Files) 提供了一种方式来查看系统上哪些进程正在访问哪些文件,能够显示文件类型、文件名、文件描述符、所属进程等详细信息。

在类Unix系统中,几乎所有的操作都与文件相关联,文件不仅包括常见的文本文件、二进制文件,还包括网络连接、设备文件、管道等。
因此,lsof可以应用在方方面面,而不仅是查看文本文件。

2、lsof的输出字段

lsof 的输出包含很多字段,以下是常见的一些:

  • COMMAND:打开文件的命令名。
  • PID:进程ID。
  • USER:打开文件的用户。
  • FD:文件描述符,表示进程使用的文件标识符(例如 cwd 表示当前工作目录,txt 表示程序执行文件)。
  • TYPE:文件类型,常见的如 REG(普通文件)、DIR(目录)、CHR(字符设备)等。
  • DEVICE:设备号,显示该文件所在的设备。
  • SIZE/OFF:文件大小或文件偏移量。
  • NODE:文件的inode号。
  • NAME:文件的路径名。

3、lsof的常见用法

3.1、查看所有打开的文件

lsof

该命令将列出系统中所有已打开的文件,包括正在运行的进程、打开的文件以及它们的描述符。

最基本的用法,但是一般不会单独使用,因为所有打开的文件实在是太多了。

3.2、查看某个进程打开的文件

lsof -p <pid>

其中,<pid> 是进程ID。此命令显示指定进程打开的所有文件。

3.3、查看某个文件被哪些进程打开

lsof <filename>

可以使用该命令来查看某个文件被哪些进程打开。

比如:
在这里插入图片描述

3.4、查看某个端口的使用情况

lsof -i :<port>

这个命令可以用来查看某个网络端口的使用情况。
例如,要查看80端口的使用情况:lsof -i :80

3.5、查看某个用户打开的文件

lsof -u <username>

该命令将列出指定用户所打开的所有文件。

3.6、仅显示网络连接

lsof -i

该命令列出所有网络连接信息,类似于 netstat 命令,但lsof能够显示更多的进程信息。
在这里插入图片描述

3.7、查看某个目录下所有打开的文件

lsof +D <directory>

例如,要查看家目录下所有打开的文件,可以使用:lsof +D ~

4、lsof的应用场景举例

  • 定位占用端口的进程:当你发现某个端口已经被占用,而你不清楚是哪个进程占用了它时,可以使用 lsof -i :<port> 来查看。
  • 查找正在访问的文件:通过 lsof,我们可以查看某个文件是否正在被某个进程使用,从而决定是否可以删除或修改该文件。
  • 网络连接的审计:系统管理员可以使用 lsof -i 来审计系统的所有网络连接,监控系统的网络活动,特别是在发现可疑的网络行为时。
  • 调试文件系统:在文件系统发生问题时,可以通过 lsof 查找是否有进程占用了某些文件,导致无法正常卸载文件系统。
http://www.xdnf.cn/news/7454.html

相关文章:

  • 【Nuxt3】安装 Naive UI 按需自动引入组件
  • ThreadLocal 源码深度解析
  • Linux基础第四天
  • goldenDB创建函数索引报错问题
  • 鸿蒙 Background Tasks Kit(后台任务开发服务)
  • 北京本地 SEO 推广:从技术成本到效果转化的深度拆解
  • 从零训练一个大模型:DeepSeek 的技术路线与实践
  • 苏州SMT贴片加工服务选择指南
  • MCP详解
  • Python中的整型(int)和浮点数(float)
  • 哈希表和哈希函数
  • 养生攻略:打造活力健康日常
  • 《 二级指针:解锁指针的进阶魔法》
  • GPT/Claude3国内免费镜像站更新 亲测可用
  • 活学妙用——5W2H分析法
  • 【java第17集】java流程控制语句详解
  • 按键太频繁导致,报不应该报的错误!
  • 秒删node_modules 极速删除 (rimraf工具)
  • Linux grep 命令详解:常用选项、参数及实战场景
  • 基于SpringBoot的家政预约系统
  • 以下是 MySQL 中常用到的 英语单词和词组 的全面分类整理,涵盖数据库操作、SQL语句、函数、配置等核心内容
  • 监控易:一体化集成平台,打破运维壁垒
  • 通过子接口(Sub-Interface)实现三层接口与二层 VLAN 接口的通信
  • bat 批处理获取日期、时间
  • vue3自适应高度超出折叠功能
  • 【DNS寻址之旅】从敲下网址到网页呈现:DNS的“第一次亲密接触”**
  • 聊聊更新中断和更新事件那些事儿
  • 【C++】不推荐使用的std::allocator<void>
  • 对于程序员的个人理解
  • 机器学习第十七讲:PCA → 把100维数据压缩成3D视图仍保持主要特征