导航菜单

Linux命令大全-lsof命令

陆兴东 2026-08-11 7 浏览 Linux命令

** 一、简介 **

lsof(英文缩写:list opened files)命令用于列出当前系统打开的所有文件及相关进程信息。在Liunx系统中“一切皆文件”的理念意味着lsof不仅能显示常规文件,还能显示相关网络连接、设备文件、管道和套接字等相关信息。

** 二、语法 **

** 语法: ** lsof [参数] [文件名]

** 常用参数说明: **

选项说明
-a使用 AND 逻辑组合多个条件
-c <进程名>显示指定进程打开的文件
-d <文件描述符>显示指定文件描述符的文件
-i显示网络连接相关信息
-n不解析主机名(显示 IP 地址)
-P不解析端口名(显示端口号)
-p <PID>显示指定进程 ID 打开的文件
-u <用户名>显示指定用户打开的文件
+D <目录>递归显示目录下被打开的文件
-t仅输出进程 ID(适合脚本使用)

** 三、用常示例 **

** 1、查看所有打开的文件 **


 

[root@CentOS7 ~]# lsofCOMMAND     PID   TID           USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAMEsystemd       1                 root  cwd       DIR              253,0       247         96 /systemd       1                 root  rtd       DIR              253,0       247         96 /systemd       1                 root  txt       REG              253,0   1616360   51185640 /usr/lib/systemd/systemd*******************省略部分内容输出*******************

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


 

//查看PID为22进程打开的文件[root@CentOS7 ~]# lsof -p 22COMMAND   PID USER   FD      TYPE DEVICE SIZE/OFF NODE NAMEkintegrit  22 root  cwd       DIR  253,0      247   96 /kintegrit  22 root  rtd       DIR  253,0      247   96 /kintegrit  22 root  txt   unknown                      /proc/22/exe//查看所有ssh进程打开的文件[root@CentOS7 ~]# lsof -c sshCOMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF     NODE NAMEsshd    4324 root  cwd    DIR              253,0      247       96 /*******************省略部分内容输出*******************

** 3、查看相关网络连接 **


 

//查看所有网络连接[[root@CentOS7 ~]# lsof -iCOMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEsystemd      1   root   42u  IPv4  26650      0t0  TCP *:sunrpc (LISTEN)systemd      1   root   43u  IPv4  26651      0t0  UDP *:sunrpc //查看所有使用22端口的连接[root@CentOS7 ~]# lsof -i :22COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEsshd    4324 root    3u  IPv4  33277      0t0  TCP *:ssh (LISTEN)sshd    4324 root    4u  IPv6  33279      0t0  TCP *:ssh (LISTEN)sshd    6844 root    3u  IPv4 166898      0t0  TCP CentOS7.6:ssh->192.168.20.2:56508 (ESTABLISHED)//查看所有TCP连接[root@CentOS7 ~]# lsof -i TCPCOMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEsystemd    1   root   42u  IPv4  26650      0t0  TCP *:sunrpc (LISTEN)systemd    1   root   44u  IPv6  26652      0t0  TCP *:sunrpc (LISTEN)*******************省略部分内容输出*******************

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


 

[root@CentOS7 ~]# lsof -u rootCOMMAND    PID USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAMEsystemd      1 root  cwd       DIR              253,0       247         96 /systemd      1 root  rtd       DIR              253,0       247         96 /systemd      1 root  txt       REG              253,0   1616360   51185640 /usr/lib/systemd/systemd*******************省略部分内容输出*******************

** 5、查看被删除但仍被进程占用的文件 **


 

[root@CentOS7 ~]# lsof |grep deletedpulseaudi  6987                  gdm    6u      REG                0,4  67108864      36776 /memfd:pulseaudio (deleted)alsa-sink  6987  7001            gdm    6u      REG                0,4  67108864      36776 /memfd:pulseaudio (deleted)*******************省略部分内容输出*******************

这种情况常见于删除了某一文件(如:日志文件),但服务仍在运行,导致磁盘空间未被释放。

** 6、查看指定目录下被打开的文件 **


 

[root@CentOS7 ~]# lsof +D /var/logCOMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAMEauditd    3888 root    5w   REG  253,0  3103745 50331748 /var/log/audit/audit.logabrt-watc 3936 root    4r   REG  253,0    50383     1574 /var/log/Xorg.0.log*******************省略部分内容输出*******************

** 7、只查看PID **


 

[root@CentOS7 proc]# lsof -t123*******************省略部分内容输出*******************

** 四、lsof输出字段解释 **

losf命令输出的字段列如下:

  •  

     

    COMMAND     PID             USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME

** COMMAND: ** 进程名称

** PID: ** 进程ID

** USER: ** 运行进程的用户

** FD: ** 文件描述符,分为以下几种

cwd:当前工作目录

txt:程序代码文件

mem:内存映射文件

0u、1u、2u:标准输入、输出和错误

** TYPE: ** 文件类型,分为以下几种

REG:常规文件

DIR: 目录

** CHR: ** 字符设备等

** DEVICE: ** 设备号

** SIZE/OFF: ** 文件大小/偏移量

** NODE: ** 文件inode号

** NAME: ** 文件名或挂载点