Linux lsof命令教程及示例

Linux是一个基于文件的操作系统,其中所有内容都是一个文件。作为一个基于文件的操作系统,有很多与文件相关的工具和命令。lsof命令用于查找进程打开的文件列表。lsof的名称来自“打开的文件列表”。lsof命令非常有用,因为已经打开和未关闭的文件不能被移动或删除,或者相关的文件系统不能被卸载等等。

null

lsof命令语法

lsof命令的语法与其他Linux命令相同。

lsof OPTIONS
  • 选项 可以是进程ID或协议名称等。选项是可选的。

列出所有打开的文件

lsof命令不提供任何参数is选项,列出所有打开的文件和相关进程。这将创建一个长列表,因为单个进程通常可以打开多个文件。

lsof
图片[1]-Linux lsof命令教程及示例-yiteyi-C++库

这里列出了lsof命令输出的COMMAND、PID等列。

  • 命令 打开文件的命令或可执行文件名。
  • PID 是进程ID或命令或可执行文件。
  • 每日三次 是任务ID。
  • 用户 是进程所有者用户名
  • FD公司 是文件描述符,可以 cwd公司 , 电阻式温度检测器 , 文本 记忆 . 此外,还有一些访问模式,如 r 为了阅读, w 用于写访问,以及 u 用于读写访问。
  • 类型 指定可以使用的文件类型 目录 (常规目录), 规则 (常规文件), CHR公司 (字符设备),以及 先进先出 (先进先出)。

列出特定用户的所有打开的文件

默认情况下,lsof命令列出所有用户的所有进程和打开的文件。但是我们可以为特定用户限制或过滤打开的文件和进程。我们将使用-u选项并提供用户名。在下面的示例中,我们将列出用户ismail的所有打开的文件和进程。

lsof -u ismail

查找打开/侦听端口的进程

lsof命令还用于查找正在侦听特定网络(TCP/UDP)端口的进程。例如,ssh侦听端口号TCP 22,我们将指定协议类型,可以是TCP或UDP,端口号如22和 -我 参数如下。我们还将提供sudo命令,因为与端口和套接字相关的操作需要root权限。

sudo lsof -i TCP:22

输出如下。

COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME sshd    916 root    3u  IPv4  39812      0t0  TCP *:ssh (LISTEN) sshd    916 root    4u  IPv6  39814      0t0  TCP *:ssh (LISTEN)

仅列出IPv4端口

IPv4和IPv6是两个不同的IP协议版本,其中IPv4目前比较流行,而IPv6是下一代。我们只能列出IPv4协议连接和侦听端口,如下所示。

sudo lsof -i 4

清单如下。

COMMAND    PID            USER   FD   TYPE DEVICE SIZE/OFF NODE NAME systemd-r  712 systemd-resolve   12u  IPv4  35310      0t0  UDP localhost:domain  systemd-r  712 systemd-resolve   13u  IPv4  35311      0t0  TCP localhost:domain (LISTEN) avahi-dae  755           avahi   12u  IPv4  39552      0t0  UDP *:mdns  avahi-dae  755           avahi   14u  IPv4  39554      0t0  UDP *:50799  NetworkMa  760            root   22u  IPv4 159669      0t0  UDP ubuntu:bootpc->192.168.146.254:bootps  sshd       916            root    3u  IPv4  39812      0t0  TCP *:ssh (LISTEN) mysqld    1056           mysql   32u  IPv4  49638      0t0  TCP localhost:33060 (LISTEN) mysqld    1056           mysql   34u  IPv4  48316      0t0  TCP localhost:mysql (LISTEN) cupsd     5625            root    7u  IPv4 134297      0t0  TCP localhost:ipp (LISTEN) cups-brow 5628            root    7u  IPv4 134314      0t0  UDP *:631 

仅列出IPv6端口

此外,只有IPv6端口可以与下面的-i6一起列出。

sudo lsof -i 6

打开或侦听的IPv6端口和相关进程如下所示。

COMMAND    PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME avahi-dae  755    avahi   13u  IPv6  39553      0t0  UDP *:mdns  avahi-dae  755    avahi   15u  IPv6  39555      0t0  UDP *:50825  sshd       916     root    4u  IPv6  39814      0t0  TCP *:ssh (LISTEN) xrdp-sesm  917     root    7u  IPv6  40965      0t0  TCP ip6-localhost:3350 (LISTEN) xrdp       959     xrdp   11u  IPv6  44724      0t0  TCP *:ms-wbt-server (LISTEN) apache2    971     root    4u  IPv6  42125      0t0  TCP *:http (LISTEN) apache2   5619 www-data    4u  IPv6  42125      0t0  TCP *:http (LISTEN) apache2   5620 www-data    4u  IPv6  42125      0t0  TCP *:http (LISTEN) apache2   5621 www-data    4u  IPv6  42125      0t0  TCP *:http (LISTEN) apache2   5622 www-data    4u  IPv6  42125      0t0  TCP *:http (LISTEN) apache2   5623 www-data    4u  IPv6  42125      0t0  TCP *:http (LISTEN) cupsd     5625     root    6u  IPv6 134296      0t0  TCP ip6-localhost:ipp (LISTEN)

仅列出TCP端口

只能使用“”列出TCP端口 -我是TCP “就像下面一样。

sudo lsof -i TCP

仅列出指定范围的TCP端口号

可以根据端口号列出打开的或侦听的端口。端口范围可以通过提供起始编号和结束编号来指定。在下面的示例中,我们将只列出使用TCP端口号1和2048的进程。

sudo lsof -i TCP:1-2048

列出所有网络连接

所有网络连接都可以用-i选项列出。这将列出IPv4、IPv6、TCP和UDP的所有已打开或正在侦听的网络连接。

sudo lsof -i

列出进程ID为(PID)的打开文件

我们可以使用进程ID或PID来过滤进程。p选项和进程ID用于记录进程的打开或侦听端口号。在

lsof -p 8731

输出如下。

bash    8731 ismail  cwd    DIR    8,3     4096 5643833 /home/ismail bash    8731 ismail  rtd    DIR    8,3     4096       2 / bash    8731 ismail  txt    REG    8,3  1183448 4456540 /usr/bin/bash bash    8731 ismail  mem    REG    8,3    55904 4463960 /usr/lib/x86_64-linux-gnu/libnss_files-2.32.so bash    8731 ismail  mem    REG    8,3 17360800 4462545 /usr/lib/locale/locale-archive bash    8731 ismail  mem    REG    8,3  1995896 4463186 /usr/lib/x86_64-linux-gnu/libc-2.32.so bash    8731 ismail  mem    REG    8,3    18816 4463329 /usr/lib/x86_64-linux-gnu/libdl-2.32.so bash    8731 ismail  mem    REG    8,3   192032 4464308 /usr/lib/x86_64-linux-gnu/libtinfo.so.6.2 bash    8731 ismail  mem    REG    8,3    27002 5115982 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache bash    8731 ismail  mem    REG    8,3   195584 4462972 /usr/lib/x86_64-linux-gnu/ld-2.32.so bash    8731 ismail    0u   CHR  136,1      0t0       4 /dev/pts/1 bash    8731 ismail    1u   CHR  136,1      0t0       4 /dev/pts/1 bash    8731 ismail    2u   CHR  136,1      0t0       4 /dev/pts/1 bash    8731 ismail  255u   CHR  136,1      0t0       4 /dev/pts/1

相关文章: 如何在bashshell和脚本中增加变量?

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享