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

相关推荐

  • tput

    文章目录tput补充说明什么是 terminfo 数据库?实例 tput 通过terminfo数据库对终端会话进行初始化和操作 补充说明 tput命令 将通过 terminfo 数…

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

    文章目录uname概要主要用途选项返回值例子注意 uname 打印系统信息。 概要 uname [OPTION]… 主要用途 打印机器和操作系统的信息。 当没有选项时,默认启用…

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

    文章目录more补充说明语法选项参数实例 more 显示文件内容,每次显示一屏 补充说明 more命令 是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持…

    入门教程 2024年 1月 3日
  • ltrace

    文章目录ltrace补充说明语法选项实例 ltrace 用来跟踪进程调用库函数的情况 补充说明 ltrace命令 是用来跟踪进程调用库函数的情况。 语法 ltrace [optio…

    入门教程 2023年 12月 19日
  • xz

    文章目录xz补充说明语法选项参数实例 xz POSIX 平台开发具有高压缩率的工具 补充说明 xz命令 XZ Utils 是为 POSIX 平台开发具有高压缩率的工具。它使用 LZ…

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

    文章目录usernetctl补充说明语法参数 usernetctl 被允许时操作指定的网络接口 补充说明 usernetctl命令 在用于被允许时操作指定的网络接口。 语法 use…

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

    文章目录lvcreate补充说明语法选项参数实例 lvcreate 用于创建LVM的逻辑卷 补充说明 lvcreate命令 用于创建LVM的逻辑卷。逻辑卷是创建在卷组之上的。逻辑卷…

    入门教程 2023年 12月 19日
  • 29. Defer

    欢迎来到 Golang 系列教程的第 29 篇。 文章目录什么是 defer?示例延迟方法实参取值(Arguments Evaluation)defer 栈defer 的实际应用 …

    2023年 12月 5日
  • du

    文章目录du补充说明语法选项实例 du 显示每个文件和目录的磁盘使用空间 补充说明 du命令 也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的…

    入门教程 2023年 12月 7日
  • sh

    文章目录sh补充说明语法选项实例 sh shell命令解释器 补充说明 sh命令 是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取。通过用户输入命令,和内核进行…

    入门教程 2024年 3月 4日

发表回复

登录后才能评论
Translate »