Linux 命令 | 常用命令 lsof 详解 + 实例

2024-05-29 18:18

本文主要是介绍Linux 命令 | 常用命令 lsof 详解 + 实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、基本概念

二、常用参数

三、实例

3.1 无参数

3.2 -p 参数

3.3 -l 参数

3.4 -u 参数

3.5 -c 参数

3.6 -d 参数

3.7 fileName

3.8 -i 参数

四、总结

五、参考文献


    lsof 命令常用于查找进程打开了哪些文件以及与打开文件相关联的内容,这篇文章将介绍 lsof 常用的命令参数,下面通过实例进行说明。

一、基本概念

    命令 lsof ( list opened files )负责列出系统中已经打开的文件,包括普通文件,目录,块特殊文件,字符特殊文件,正在执行的文本引用,库,流或网络文件(例如:网络套接字,NFS文件或UNIX域套接字)。

二、常用参数

-p pid : 输出指定进程打开的文件;

-l : 输出中使用ID代替用户名;

-u userName : 输出指定用户打开的文件;

-c string : 输出 COMMAND 列中包含 string 的项;

-d fd : 输出包含指定描述符的项;

fileName : 输出打开文件 fileName 的所有项;

-i [46] [protocol][@hostname|hostaddr][:service|port] : 输出符合指定条件的项,其中:

    46 :分别指 IPv4、IPv6;

    protocol :指 TCP 或 UDP;

    hostname :  网络主机名;

    hostaddr : IP 地址;

    service : 包含在 /etc/services 中的名称;

    port : 端口号,可以是多个;

三、实例

3.1 无参数

      在终端中直接执行 lsof 命令,如下所示:

[root@localhost ~]# lsof
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND     PID   TID           USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd       1                 root  cwd       DIR              253,0       236         64 /
systemd       1                 root  rtd       DIR              253,0       236         64 /
systemd       1                 root  txt       REG              253,0   1616360   67485964 /usr/lib/systemd/systemd
systemd       1                 root  mem       REG              253,0     20112   33750391 /usr/lib64/libuuid.so.1.3.0
systemd       1                 root  mem       REG              253,0    265624   33750457 /usr/lib64/libblkid.so.1.1.0
systemd       1                 root  mem       REG              253,0     90248   33628492 /usr/lib64/libz.so.1.2.7
systemd       1                 root  mem       REG              253,0    157424   33750414 /usr/lib64/liblzma.so.5.2.2
systemd       1                 root  mem       REG              253,0     23968   33750402 /usr/lib64/libcap-ng.so.0.0.0
systemd       1                 root  mem       REG              253,0     19896   33750102 /usr/lib64/libattr.so.1.1.0
systemd       1                 root  mem       REG              253,0     19248   33591164 /usr/lib64/libdl-2.17.so
systemd       1                 root  mem       REG              253,0    402384   33750139 /usr/lib64/libpcre.so.1.2.0
……
……

其中,每列参数的含义如下:

1. COMMAND : 命令名称;

2. PID : 进程ID;

3. TID : 线程ID,如果为空代表列出的是进程;

4. TASKCMD : 任务名称,通常与 COMMAND 相同;

5. USER : 用户ID号或登录名;

6. FD : 文件描述符;

7. TYPE : 与文件关联结点的类型;

8. DEVICE : 设备号;

9. SIZE/OFF : 文件大小/偏移量,以字节为单位;

10. NODE : 文件结点;

11. NAME : 文件挂载点和文件所在的系统;

3.2 -p 参数

      执行命令 lsof -p 1,列出 1号 进程打开的文件,如下所示:

[root@localhost ~]# lsof -p 1
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
systemd   1 root  cwd       DIR              253,0      236         64 /
systemd   1 root  rtd       DIR              253,0      236         64 /
systemd   1 root  txt       REG              253,0  1616360   67485964 /usr/lib/systemd/systemd
systemd   1 root  mem       REG              253,0    20112   33750391 /usr/lib64/libuuid.so.1.3.0
systemd   1 root  mem       REG              253,0   265624   33750457 /usr/lib64/libblkid.so.1.1.0
systemd   1 root  mem       REG              253,0    90248   33628492 /usr/lib64/libz.so.1.2.7
systemd   1 root  mem       REG              253,0   157424   33750414 /usr/lib64/liblzma.so.5.2.2
systemd   1 root  mem       REG              253,0    23968   33750402 /usr/lib64/libcap-ng.so.0.0.0
systemd   1 root  mem       REG              253,0    19896   33750102 /usr/lib64/libattr.so.1.1.0
systemd   1 root  mem       REG              253,0    19248   33591164 /usr/lib64/libdl-2.17.so
systemd   1 root  mem       REG              253,0   402384   33750139 /usr/lib64/libpcre.so.1.2.0
systemd   1 root  mem       REG              253,0  2156272   33591158 /usr/lib64/libc-2.17.so
systemd   1 root  mem       REG              253,0   142144   33623171 /usr/lib64/libpthread-2.17.so
systemd   1 root  mem       REG              253,0    88720   33591127 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
systemd   1 root  mem       REG              253,0    43712   33623176 /usr/lib64/librt-2.17.so
……

3.3 -l 参数

  执行命令 lsof -l ,输出中使用用户 ID 代替用户名,如下所示:

[root@localhost ~]# lsof -l
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND     PID   TID     USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd       1              0  cwd       DIR              253,0       236         64 /
systemd       1              0  rtd       DIR              253,0       236         64 /
systemd       1              0  txt       REG              253,0   1616360   67485964 /usr/lib/systemd/systemd
systemd       1              0  mem       REG              253,0     20112   33750391 /usr/lib64/libuuid.so.1.3.0
systemd       1              0  mem       REG              253,0    265624   33750457 /usr/lib64/libblkid.so.1.1.0
systemd       1              0  mem       REG              253,0     90248   33628492 /usr/lib64/libz.so.1.2.7
……

例子中,USER 列显示的是用户ID而不是用户名。

3.4 -u 参数

  执行命令 lsof -u root,输出 root 用户打开的文件,如下所示:

[root@localhost ~]# lsof -u root
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND     PID USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd       1 root  cwd       DIR              253,0       236         64 /
systemd       1 root  rtd       DIR              253,0       236         64 /
systemd       1 root  txt       REG              253,0   1616360   67485964 /usr/lib/systemd/systemd
systemd       1 root  mem       REG              253,0     20112   33750391 /usr/lib64/libuuid.so.1.3.0
systemd       1 root  mem       REG              253,0    265624   33750457 /usr/lib64/libblkid.so.1.1.0
systemd       1 root  mem       REG              253,0     90248   33628492 /usr/lib64/libz.so.1.2.7
……

3.5 -c 参数

    执行命令 lsof -c sshd,输出 COMMAND 列包含 sshd 的项,如下所示:

[root@localhost ~]# lsof -c sshd
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND   PID       USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
sshd     9237       root  cwd    DIR              253,0      236        64 /
sshd     9237       root  rtd    DIR              253,0      236        64 /
sshd     9237       root  txt    REG              253,0   853040  35966750 /usr/sbin/sshd
sshd     9237       root  mem    REG              253,0    61560  33617054 /usr/lib64/libnss_files-2.17.so
sshd     9237       root  mem    REG              253,0    68192  33750408 /usr/lib64/libbz2.so.1.0.6
sshd     9237       root  mem    REG              253,0   100008  33750485 /usr/lib64/libelf-0.172.so
sshd     9237       root  mem    REG              253,0    19896  33750102 /usr/lib64/libattr.so.1.1.0
sshd     9237       root  mem    REG              253,0    15688  33750299 /usr/lib64/libkeyutils.so.1.5
sshd     9237       root  mem    REG              253,0    62888  33750374 /usr/lib64/libkrb5support.so.0.1
……

3.6 -d 参数

执行命令 lsof -d 12,输出打开文件描述符 12 的所有项,如下所示:

[root@localhost ~]# lsof -d 12
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND     PID       USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
systemd       1       root   12u     unix 0xffff9e2ab51d6c00      0t0      25988 /run/systemd/private
systemd-j  4392       root   12u  a_inode               0,10        0       7495 [timerfd]
auditd     8686       root   12u  a_inode               0,10        0       7495 [eventfd]
dbus-daem  8724       dbus   12u     unix 0xffff9e2b33fac000      0t0      44865 /run/dbus/system_bus_socket
avahi-dae  8785      avahi   12u     IPv4              54551      0t0        UDP *:mdns
systemd-l  8788       root   12u     unix 0xffff9e2bb62cac00      0t0      48301 socket
NetworkMa  8794       root   12u  netlink                         0t0      52627 KOBJECT_UEVENT
udisksd    8795       root   12u  a_inode               0,10        0       7495 [eventfd]
tuned      9236       root   12u  a_inode               0,10        0       7495 [eventpoll]
……

3.7 fileName

    执行命令 lsof /usr/lib64/ld-2.17.so,查看打开文件/usr/lib64/ld-2.17.so的进程项,如下所示:

[root@localhost ~]# lsof /usr/lib64/ld-2.17.so
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND     PID           USER  FD   TYPE DEVICE SIZE/OFF     NODE NAME
systemd       1           root mem    REG  253,0   163312 33554510 /usr/lib64/ld-2.17.so
systemd-j  4392           root mem    REG  253,0   163312 33554510 /usr/lib64/ld-2.17.so
lvmetad    4417           root mem    REG  253,0   163312 33554510 /usr/lib64/ld-2.17.so
systemd-u  4429           root mem    REG  253,0   163312 33554510 /usr/lib64/ld-2.17.so
auditd     8686           root mem    REG  253,0   163312 33554510 /usr/lib64/ld-2.17.so
audispd    8688           root mem    REG  253,0   163312 33554510 /usr/lib64/ld-2.17.so
sedispatc  8691           root mem    REG  253,0   163312 33554510 /usr/lib64/ld-2.17.so
lsmd       8712 libstoragemgmt mem    REG  253,0   163312 33554510 /usr/lib64/ld-2.17.so
rpcbind    8713            rpc mem    REG  253,0   163312 33554510 /usr/lib64/ld-2.17.so
abrtd      8715           root mem    REG  253,0   163312 33554510 /usr/lib64/ld-2.17.so
abrt-watc  8716           root mem    REG  253,0   163312 33554510 /usr/lib64/ld-2.17.so
……

3.8 -i 参数

(1)执行命令 lsof -i 4,输出 TYPE 为 IPv4 的所有项,如下所示:

[root@localhost ~]# lsof -i 4
COMMAND     PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd       1       root   41u  IPv4  47143      0t0  TCP *:sunrpc (LISTEN)
systemd       1       root   42u  IPv4  47144      0t0  UDP *:sunrpc
rpcbind    8713        rpc    4u  IPv4  47143      0t0  TCP *:sunrpc (LISTEN)
rpcbind    8713        rpc    5u  IPv4  47144      0t0  UDP *:sunrpc
rpcbind    8713        rpc   10u  IPv4  44332      0t0  UDP *:netconf-beep
avahi-dae  8785      avahi   12u  IPv4  54551      0t0  UDP *:mdns
avahi-dae  8785      avahi   13u  IPv4  54552      0t0  UDP *:36757
chronyd    8893     chrony    1u  IPv4  54530      0t0  UDP localhost:323
sshd       9237       root    3u  IPv4  55748      0t0  TCP *:ssh (LISTEN)
……

 (2)执行命令 lsof -i UDP 输出协议类型为 UDP 的所有项,如下所示:

[root@localhost ~]# lsof -i UDP
COMMAND     PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd       1   root   42u  IPv4  47144      0t0  UDP *:sunrpc
systemd       1   root   45u  IPv6  47146      0t0  UDP *:sunrpc
rpcbind    8713    rpc    5u  IPv4  47144      0t0  UDP *:sunrpc
rpcbind    8713    rpc    7u  IPv6  47146      0t0  UDP *:sunrpc
rpcbind    8713    rpc   10u  IPv4  44332      0t0  UDP *:netconf-beep
rpcbind    8713    rpc   11u  IPv6  44333      0t0  UDP *:netconf-beep
avahi-dae  8785  avahi   12u  IPv4  54551      0t0  UDP *:mdns
avahi-dae  8785  avahi   13u  IPv4  54552      0t0  UDP *:36757
chronyd    8893 chrony    1u  IPv4  54530      0t0  UDP localhost:323
chronyd    8893 chrony    2u  IPv6  54531      0t0  UDP localhost:323
dnsmasq   11383 nobody    3u  IPv4  61779      0t0  UDP *:bootps
dnsmasq   11383 nobody    5u  IPv4  61782      0t0  UDP localhost.localdomain:domain
kubelet   20062   root    5u  IPv4 211268      0t0  UDP localhost.localdomain:43225->gateway:domain
dhclient  25719   root    6u  IPv4 181490      0t0  UDP *:bootpc

四、总结

    lsof 在查找关于打开文件的相关信息时经常用到,上面对常用命令参数进行了介绍,更详细的内容可以查看 man 手册。

五、参考文献

[1] https://man7.org/linux/man-pages/man8/lsof.8.html

[2] https://www.cnblogs.com/sparkdev/p/10271351.html

[3] https://blog.csdn.net/xifeijian/article/details/9088137

 

这篇关于Linux 命令 | 常用命令 lsof 详解 + 实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014282

相关文章

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Linux之软件包管理器yum详解

《Linux之软件包管理器yum详解》文章介绍了现代类Unix操作系统中软件包管理和包存储库的工作原理,以及如何使用包管理器如yum来安装、更新和卸载软件,文章还介绍了如何配置yum源,更新系统软件包... 目录软件包yumyum语法yum常用命令yum源配置文件介绍更新yum源查看已经安装软件的方法总结软

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3