lsof

lsof

显示Linux系统当前已打开的所有文件列表 lsof -p pid

补充说明

lsof命令 用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。

在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

语法

lsof (选项)

选项

-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程(协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
-h:显示帮助信息;
-v:显示版本信息

实例

lsof
command     PID USER   FD      type             DEVICE     SIZE       NODE NAME
init          1 root  cwd       DIR                8,2     4096          2 /
init          1 root  rtd       DIR                8,2     4096          2 /
init          1 root  txt       REG                8,2    43496    6121706 /sbin/init
init          1 root  mem       REG                8,2   143600    7823908 /lib64/ld-2.5.so
init          1 root  mem       REG                8,2  1722304    7823915 /lib64/libc-2.5.so
init          1 root  mem       REG                8,2    23360    7823919 /lib64/libdl-2.5.so
init          1 root  mem       REG                8,2    95464    7824116 /lib64/libselinux.so.1
init          1 root  mem       REG                8,2   247496    7823947 /lib64/libsepol.so.1
init          1 root   10u     FIFO               0,17                1233 /dev/initctl
migration     2 root  cwd       DIR                8,2     4096          2 /
migration     2 root  rtd       DIR                8,2     4096          2 /
migration     2 root  txt   unknown                                        /proc/2/exe
ksoftirqd     3 root  cwd       DIR                8,2     4096          2 /
ksoftirqd     3 root  rtd       DIR                8,2     4096          2 /
ksoftirqd     3 root  txt   unknown                                        /proc/3/exe
migration     4 root  cwd       DIR                8,2     4096          2 /
migration     4 root  rtd       DIR                8,2     4096          2 /
migration     4 root  txt   unknown                                        /proc/4/exe
ksoftirqd     5 root  cwd       DIR                8,2     4096          2 /
ksoftirqd     5 root  rtd       DIR                8,2     4096          2 /
ksoftirqd     5 root  txt   unknown                                        /proc/5/exe
events/0      6 root  cwd       DIR                8,2     4096          2 /
events/0      6 root  rtd       DIR                8,2     4096          2 /
events/0      6 root  txt   unknown                                        /proc/6/exe
events/1      7 root  cwd       DIR                8,2     4096          2 /

lsof输出各列信息的意义如下:

标识 说明
COMMAND 进程的名称
PID 进程标识符
PPID 父进程标识符(需要指定-R参数)
USER 进程所有者
PGID 进程所属组
FD 文件描述符,应用程序通过它识别该文件

文件描述符列表:

标识 说明
cwd 表示当前工作目录,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改
txt 该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序
lnn 库引用 (AIX);
er FD 信息错误(参见名称栏)
jld jail 目录 (FreeBSD);
ltx 共享库文本(代码和数据)
mxx 十六进制内存映射类型编号xx
m86 DOS合并映射文件
mem 内存映射文件
mmap 内存映射设备
pd 父目录
rtd 根目录
tr 内核跟踪文件 (OpenBSD)
v86 VP/ix 映射文件
0 表示标准输出
1 表示标准输入
2 表示标准错误

一般在标准输出、标准错误、标准输入后还跟着文件状态模式:

标识 说明
u 表示该文件被打开并处于读取/写入模式
r 表示该文件被打开并处于只读模式
w 表示该文件被打开并处于写入模式
空格 表示该文件的状态模式为 unknow,且没有锁定
- 表示该文件的状态模式为 unknow,且被锁定

同时在文件状态模式后面,还跟着相关的锁:

标识 说明
N 对于未知类型的Solaris NFS锁
r 用于部分文件的读取锁定
R 对整个文件进行读取锁定
w 对文件的一部分进行写锁定(文件的部分写锁)
W 对整个文件进行写锁定(整个文件的写锁)
u 用于任何长度的读写锁
U 对于未知类型的锁
x 对于文件部分的SCO OpenServer Xenix锁
X 对于整个文件的SCO OpenServer Xenix锁
space 如果没有锁

文件类型

标识 说明
DIR 表示目录
CHR 表示字符类型
BLK 块设备类型
UNIX UNIX 域套接字
FIFO 先进先出 (FIFO) 队列
IPv4 网际协议 (IP) 套接字
DEVICE 指定磁盘的名称
SIZE 文件的大小
NODE 索引节点(文件在磁盘上的标识)
NAME 打开文件的确切名称
REG 常规文件

列出指定进程号所打开的文件:

lsof -p $pid

获取端口对应的进程ID=>pid

lsof -i:9981 -P -t -sTCP:LISTEN

列出打开文件的进程:

lsof $filename

查看端口占用

lsof -i:$port

若文章对你有帮助,可以点赞或打赏支持我们。发布者:Aurora,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/lsof/

(0)
AuroraAurora站点维系者
上一篇 2023年 12月 19日 下午4:38
下一篇 2023年 12月 19日 下午4:38

相关推荐

  • telinit

    文章目录telinit补充说明语法选项参数EnvironmentFiles telinit 切换当前正在运行系统的运行等级 补充说明 telinit命令 用于切换当前正在运行的Li…

    入门教程 2024年 3月 11日
  • fmt

    文章目录fmt补充说明语法选项参数 fmt 读取文件后优化处理并输出 补充说明 fmt命令 读取文件的内容,根据选项的设置对文件格式进行简单的优化处理,并将结果送到标准输出设备。 …

    入门教程 2023年 12月 14日
  • od

    文章目录od补充说明语法选项参数实例 od 输出文件的八进制、十六进制等格式编码的字节 补充说明 od命令 用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文…

    入门教程 2024年 1月 23日
  • losetup

    文章目录losetup补充说明语法选项参数loop设备介绍实例 losetup 设定与控制循环(loop)设备 补充说明 losetup命令 用来设置循环设备。循环设备可把文件虚拟…

    入门教程 2023年 12月 19日
  • Git 安装配置

    在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。 Git 各平台安装包下载地址为:http://…

    2024年 4月 30日
  • true

    文章目录true概要主要用途返回值例子注意 true 返回状态为成功。 概要 true 主要用途 用于和其他命令进行逻辑运算。 返回值 返回状态总是成功;返回值为0。 例子 # 当…

    入门教程 2024年 3月 11日
  • whatis

    文章目录whatis补充说明语法实例 whatis 查询一个命令执行什么功能 补充说明 whatis命令 是用于查询一个命令执行什么功能,并将查询结果打印到终端上。 whatis命…

    入门教程 2024年 1月 3日
  • Java 基础语法

    一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。 对象:对象是类的一个实例,有状态和行为。例如…

    2023年 3月 4日
  • false

    文章目录false概要主要用途返回值注意 false 返回状态为失败。 概要 false 主要用途 用于和其他命令进行逻辑运算。 返回值 返回状态总是失败;返回值为1。 注意 该命…

    入门教程 2023年 12月 14日
  • HTML 元素

    HTML 文档由 HTML 元素定义。 文章目录HTML 元素HTML 元素语法嵌套的 HTML 元素HTML 文档实例HTML 实例解析不要忘记结束标签HTML 空元素HTML …

    入门教程 2023年 4月 11日

发表回复

登录后才能评论
Translate »