lsof命令基本使用方法

文章目录

  • lsof命令基本使用方法
    • 1. lsof介绍
      • 1.1 lsof命令使用
      • 1.2 lsof中各列信息
        • 关于FD的补充说明
      • 1.3 lsof的选项信息
      • 1.4 具体使用方法和示例
      • 1.5 一些疑问
    • 2. 文件句柄及空间释放问题

1. lsof介绍

lsof可以查看你所打开的文件、打开文件的进程、甚至可以找回被删除的文件,是一个非常强大的系统管理工具

1.1 lsof命令使用

  • 直接使用lsof就可以看到全部的文件(这边只显示10条方便截图)

1.2 lsof中各列信息

  • COMMAND:打开的命令
  • PID:进程号
  • USER:用户
  • FD:文件描述符
FD 描述
cwd 表示当前目录
rtd 表示根目录
txt 表示执行的程序(例如下面示例中的tail)
mem 表示映射到内存的文件(动态链接库)
012 表示标准输入、标准输出、标准错误输出
其他数字 表示文件对应的文件描述符,无特殊意义
  • TYPE:文件类型
文件类型 描述
DIR 表示目录
REG 表示文件
CHR 表示字符?
BLK 表示块设备
UNIX 表示UNIX套接字
FIFO 表示先进先出队列
IPv4 表示网络协议(IP)套接字
  • DEVICE:磁盘名称和大小
  • SIZE/OFF:文件大小
  • NODE:索引节点(文件在磁盘上的标识)

NODE索引节点就是在内核中i-node表中对应的条目,也就是对应的文件。如果两个NODE相同(硬链接情况),说明打开的同样的文件。

如下图在两个终端使用tail查看同一个文件

  • NAME:文件名

关于FD的补充说明

  • 标准输出、标准输入、标准错误输出(也就是012)后面会跟文件状态
  • r: 文件打开且处于只读状态
  • w: 文件打开并处于写入状态
  • u: 文件被打开并处于读取/写入状态
  • -: 状态未知被锁定
  • 文件状态后面会跟
  • R: 锁定读取
  • W: 锁定写入
  • U: 未知锁

1.3 lsof的选项信息

选项 使用描述 使用示例
-c command 列出跟command相关的文件 lsof -c tail
-d fd 列出fd相关描述的文件 lsof -d 3
+d dir 列出dir下打开的文件(不进入文件夹) lsof +d /proc
+D dir 列出dir下打开的文件(递归) lsof +D /proc
-p pid 列出跟pid进程号相关的文件 lsof -p 156239
-u user 列出用户user相关的文件 lsof -u yjx
-i port 列出所有网络连接(port可以是tcp,upd或指定端口号) lsof -i tcp:80
-a 后面的两个选项都满足(相当于AND) lsof -a -c tail -u yjx
-h 查看lsof相关帮助 lsof -h
-v 查看lsof版本信息 lsof -v

1.4 具体使用方法和示例

# 列出跟tail指令相关的文件
lsof -c tail# 列出跟用户yjx相关的文件
lsof -u yjx
# 列出跟用户yjx无关的文件
lsof -u ^yjx# 列出进程号为...的文件
lsof -p 165923
lsof -p 123232,123521
lsof -p ^165  // 除了165开头的# -a相当于需要同时满足两个条件
lsof -a -c tail -u yjx
# 可以嵌套适用
lsof -a -c tail -a -u yjx -p 166068# 查看目录下的文件
lsof +d ./
# 递归查找
lsof +D ./# 根据文件描述符来查看文件
lsof -d 3
lsof -d 0,1
lsof -d 0-2
lsof -d 0-2,cwd,rtd# 查看网络连接(加入筛选)
lsof -i
lsof -i :80

举个例子,我现在使用tail打开一个文件,并获取到该进程号为169445

  • 根据command指令来查看(FD中文件状态r表示的是文件打开且只读)

  • 根据进程号来查看

  • 查看目录下打开的文件

  • 查看/proc目录下打开的文件(递归)

  • 根据文件描述符来查看(显示的文件太多,可以多加个筛选)

  • 使用-a来增加筛选条件

  • 查看tcp网络连接


1.5 一些疑问

为什么一个FD会对应有多个文件信息?
每个进程PCB中有一个文件描述符表,多个进程之间相互独立,之间的文件描述符不冲突。


2. 文件句柄及空间释放问题

可能出现场景: 一个终端正在查看文件,另一个终端将其删除,但是此时磁盘空间并没有完全释放,因为还有进程(查看)在使用这个文件。

可以通过lsof命令看到当前的文件信息

lsof -c tail

可以看到此时文件名后面有一个deleted,说明文件已经被删除,但进程179675还在使用。

只需将这个进程杀死就可以释放对应的磁盘空间。

kill 179675

Linux下lsof命令的用法相关推荐

  1. Linux 下 lsof 命令的几个高效用法

    Linux 下 lsof 命令的几个高效用法_yg@hunter的博客-CSDN博客lsof命令查看进程打开的文件,文件被哪些进程打开等等,本文列举几个实际例子看下lsof的妙用.https://bl ...

  2. linux命令 删除alias,Linux下alias命令的用法介绍

    本篇文章给大家带来的内容是关于Linux下alias命令的用法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 最近在使用ssh连接远程机器敲了类似ssh -i ~/.ssh/13 ...

  3. linux下tail命令的用法,tail命令_linux tail命令的用法

    摘要 腾兴网为您分享:linux tail命令的用法,央视影音,天猫超市,腾讯爱玩,水印相机等软件知识,以及分身多开,爱我大兴,安卓投屏电脑软件,拓客神器,新疆社区,splitit,iphone4s短 ...

  4. linux命令引用,Linux下nl命令的用法详解

    Linux中nl命令和cat命令很像,不过nl命令会打上行号,属于比较不常用的命令,下面随小编一起来了解下这个鲜为人知的nl命令吧. nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文 ...

  5. Linux下 lsof 命令详解

    lsof 是 List Open File 的缩写, 它主要用来获取被进程打开文件的信息,我们都知道,在Linux中,一切皆文件,lsof命令可以查看所有已经打开了的文件,比如: 普通文件,目录,特殊 ...

  6. Linux下scp命令的用法

    scp 对拷文件夹 和 文件夹下的所有文件 对拷文件并重命名 对拷文件夹 (包括文件夹本身) scp -r   /home/wwwroot/www/charts/util root@192.168.1 ...

  7. linux下lsof命令,Linux lsof命令使用详解

    在Linux终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能. COMMAND    PID      ...

  8. linux下tail命令的用法,在Linux命令中tail的用法

    linux中的tail命令用途是按照要求将指定的文件的最后部分输出到标准设备,一般是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,如果该档案有更新,tail会自动刷新,确保你看到最新的档案 ...

  9. Linux下lsof命令详解

    lsof命令的基本使用方法 lsof命令简介: lsof(list open files)是一个列出当前系统打开文件的工具,lsof 意义LiSt Open Files用于找出哪些文件被哪个进程打开. ...

最新文章

  1. 北京大学 AdaMod优化器 孙栩
  2. 使用 SQL 语句实现一个年会抽奖程序
  3. 译-使用Scroll Snapping实现CSS控制页面滚动
  4. [机器学习]关联挖掘算法Apriori和FP-Growth以及基于Spark 实例
  5. 【优化算法】哈里斯鹰算法(HHO)【含Matlab源码 1309期】
  6. ArcGIS教程:空间参考和地理处理
  7. no serializer
  8. 网络在线播放ASF格式流媒体文件的制作(转)
  9. 永久禁用software reporter 进程,占用高解决方法。【永久禁用software_reporter_tool.exe程序】
  10. nuc虚拟机服务器,玩出新花样NUC虚拟机OP+Roon妈妈再也不用担心听音乐卡了
  11. c语言运行可以微信直接打开吗,如何用软件visual+c+++直接打开已将创建好的MFC工程文? 爱问知识人...
  12. 网络游戏网络同步方案的选择
  13. mysql连接flush-hosts问题处理
  14. 通信原理与MATLAB(二):DSB的调制解调
  15. ENVI: 如何添加控制点并基于控制点进行几何校正?
  16. 如何高效的搜索github上面的资源
  17. 彩色星球科技旗下元宇宙平台“彩色世界”亚洲版即将发布;Branch宣布获得3亿美元融资 | 全球TMT...
  18. arduino五天小结
  19. 拼多多 2020校园招聘 二维表第k大数(二分)
  20. linux版drastic模拟器设置,DraStic nds模拟器下载安装及使用图文教程

热门文章

  1. 2021年全球与中国无纺布桌布行业市场规模及发展前景分析
  2. python:实现SMS群发短信服务(附完整源码)
  3. Java中System.out.println()简单简介
  4. 教你如何用CSS修改图片颜色
  5. vue学习-自定义指令
  6. 关于清空表数据的几种sql语句及区别
  7. python怎么安装本地的egg_python的egg包的安装和制作]
  8. 运算符的优先级及其结合性
  9. 拳头服务器什么时候修复,拳头:今年将修复《英雄联盟》客户端 启动时间降到19秒...
  10. 计算机是人类的好伴侣 作文,书是我们的好伴侣_我和书的故事作文