linux lsof命令详解

Linux 中,一切都被视为文件并组织在目录中。lsof(打开文件列表)显示打开的文件列表。它主要有助于找出有关打开文件的进程的信息。除了文件之外,它还可以列出目录、块特殊文件、共享库、字符特殊文件、常规管道、命名管道、互联网套接字、UNIX 域套接字等等。

在本教程中,我们了解lsof的命令Linux的使用容易理解的例子

lsof 命令

lsof 命令默认在大多数 Linux 发行版中可用。当我们无法卸载磁盘时,通常会使用 lsof 命令,然后 lsof 命令有助于找到打开的文件及其导致它的进程。

句法:

lsof [options] [names]

上述语法将列出系统中所有进程打开的所有文件。该lsof有各列。

COMMAND     PID   TID TASKCMD               USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME

与进程关联的 UNIX 命令的名称存储在COMMAND列中。

PID显示命令的过程ID。

USER显示与以下过程相关联的用户的名称。

TID 显示任务ID。

FD 是一个文件描述符,其中包括像CWD缩写(当前工作目录),TXT(文本文件),MEM(内存映射文件),RTD(根目录),等等。

TYPE 是特定文件类型的缩写,如REG(常规文件)、DIR(目录)、CHR(字符特殊文件)等。

DEVICE包含设备编号。

SIZE/OFF包含字节偏移的文件大小或文件。

NODE列的值表示的本地文件的节点号。

NAME显示文件名的挂载点和文件系统,以及互联网地址。

以下是lsof 命令的一些最常见用法的列表。

列出所有打开的文件

要快速获取打开文件的列表,请键入 lsof。它列出了系统各个进程打开的所有文件。

$ sudo lsof 

输出:

COMMAND     PID   TID TASKCMD               USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
 systemd       1                             root  cwd       DIR                8,0      4096          2 /
 systemd       1                             root  rtd       DIR                8,0      4096          2 /
 systemd       1                             root  txt       REG                8,0   1620224       7820 /usr/lib/systemd/systemd
 systemd       1                             root  mem       REG                8,0   1369352       7450 /usr/lib/x86_64-linux-gnu/libm-2.31.so
 systemd       1                             root  mem       REG                8,0    178528       7600 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.17
 systemd       1                             root  mem       REG                8,0   1575112       3451 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0
 systemd       1                             root  mem       REG                8,0    137584        779 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.28.0
 systemd       1                             root  mem       REG                8,0     67912       1542 /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0
 systemd       1                             root  mem       REG                8,0     34872       3342 /usr/lib/x86_64-linux-gnu/libargon2.so.1
 systemd       1                             root  mem       REG                8,0    431472       3357 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1
 systemd       1                             root  mem       REG                8,0     30936       1036 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0
 systemd       1                             root  DEL       REG                8,0                 1553 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
 systemd       1                             root  mem       REG                8,0     27064         75 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0
 systemd       1                             root  mem       REG                8,0     18816       7444 /usr/lib/x86_64-linux-gnu/libdl-2.31.so
 systemd       1                             root  mem       REG                8,0    584392       1639 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0
 systemd       1                             root  mem       REG                8,0    157224      12782 /usr/lib/x86_64-linux-gnu/libpthread-2.31.so

按用户名列出打开的文件

在一个系统中,可能存在一个多用户环境,每个用户都有不同的需求,并相应地使用文件和设备。lsof 有一个命令,可用于查找特定用途打开的特定文件列表。

您还可以同时指定多个用户。您可以选择编写由逗号分隔的语法或使用两个标志。

如果您希望获得除某个用户之外的所有打开文件的列表,请使用带有 -u 选项的 lsof 命令。

按用户名列出打开的文件

$ sudo lsof -u [username]

例如:

$ lsof -u kali

输出:

COMMAND    PID USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd   1082 kali  cwd       DIR                8,1     36864          2 /
systemd   1082 kali  rtd       DIR                8,1     36864          2 /
systemd   1082 kali  txt       REG                8,1   1591392    1445828 /usr/lib/systemd/systemd
systemd   1082 kali  mem       REG                8,1   1325424    1442465 /usr/lib/x86_64-linux-gnu/libm-2.30.so
systemd   1082 kali  mem       REG                8,1    174272    1442049 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.17
systemd   1082 kali  mem       REG                8,1   1574952    1444070 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0
systemd   1082 kali  mem       REG                8,1    137424    1442738 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.28.0
systemd   1082 kali  mem       REG                8,1     67752    1445649 /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0
systemd   1082 kali  mem       REG                8,1     34904    1445648 /usr/lib/x86_64-linux-gnu/libargon2.so.1
systemd   1082 kali  mem       REG                8,1    432688    1443266 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1
systemd   1082 kali  mem       REG                8,1     30776    1442077 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0
systemd   1082 kali  mem       REG                8,1   3076960    1448872 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
systemd   1082 kali  mem       REG                8,1     26976    1442133 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0
systemd   1082 kali  mem       REG                8,1     14592    1442464 /usr/lib/x86_64-linux-gnu/libdl-2.30.so
systemd   1082 kali  mem       REG                8,1    584360    1442207 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0
systemd   1082 kali  mem       REG                8,1    146912    1442480 /usr/lib/x86_64-linux-gnu/libpthread-2.30.so

对于多个用户

$ sudo lsof -u [username1] -u [username2]    

或者

$ sudo lsof -u [username1], [username2]

列出除特定用户外的打开文件

$ sudo lsof -u ^[username]

例如:

$ sudo lsof -u ^root

输出:

COMMAND    PID  TID TASKCMD         USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
dbus-daem  542                messagebus  cwd       DIR                8,1     36864          2 /
dbus-daem  542                messagebus  rtd       DIR                8,1     36864          2 /
dbus-daem  542                messagebus  txt       REG                8,1    240680    1451146 /usr/bin/dbus-daemon
dbus-daem  542                messagebus  mem       REG                8,1    231544    1452845 /usr/lib/x86_64-linux-gnu/libnss_systemd.so.2
dbus-daem  542                messagebus  mem       REG                8,1     51696    1442474 /usr/lib/x86_64-linux-gnu/libnss_files-2.30.so
dbus-daem  542                messagebus  mem       REG                8,1    137424    1442738 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.28.0
dbus-daem  542                messagebus  mem       REG                8,1     14592    1442464 /usr/lib/x86_64-linux-gnu/libdl-2.30.so
dbus-daem  542                messagebus  mem       REG                8,1    584360    1442207 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0
dbus-daem  542                messagebus  mem       REG                8,1   1163960    1442750 /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5
dbus-daem  542                messagebus  mem       REG                8,1    133464    1442773 /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2
dbus-daem  542                messagebus  mem       REG                8,1    162496    1442179 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4
dbus-daem  542                messagebus  mem       REG                8,1     39912    1442482 /usr/lib/x86_64-linux-gnu/librt-2.30.so
dbus-daem  542                messagebus  mem       REG                8,1   1831600    1441818 /usr/lib/x86_64-linux-gnu/libc-2.30.so
dbus-daem  542                messagebus  mem       REG                8,1    146912    1442480 /usr/lib/x86_64-linux-gnu/libpthread-2.30.so
dbus-daem  542                messagebus  mem       REG                8,1     76480    1445645 /usr/lib/x86_64-linux-gnu/libapparmor.so.1.6.2
dbus-daem  542                messagebus  mem       REG                8,1     26976    1442133 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0

要仅列出进程 ID,请使用 -t 选项。

$ sudo lsof -t -u sonar

如果您需要终止与特定用途相关的所有进程,这将很有帮助。例如

$ sudo kill -9 lsof -t -u sonar

按进程列出打开的文件

lsof 也可用于列出由特定进程打开的文件,方法是在 -c 选项后跟进程名称。

句法:

$ sudo lsof -c [process-name]

例如:

$ sudo lsof -c ssh

输出:

COMMAND    PID USER   FD   TYPE             DEVICE SIZE/OFF    NODE NAME
ssh-agent 1217 kali  cwd    DIR                8,1    36864       2 /
ssh-agent 1217 kali  rtd    DIR                8,1    36864       2 /
ssh-agent 1217 kali  txt    REG                8,1   342152 1453090 /usr/bin/ssh-agent
ssh-agent 1217 kali  mem    REG                8,1   146912 1442480 /usr/lib/x86_64-linux-gnu/libpthread-2.30.so
ssh-agent 1217 kali  mem    REG                8,1    14592 1442464 /usr/lib/x86_64-linux-gnu/libdl-2.30.so
ssh-agent 1217 kali  mem    REG                8,1  1831600 1441818 /usr/lib/x86_64-linux-gnu/libc-2.30.so
ssh-agent 1217 kali  mem    REG                8,1  3076960 1448872 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
ssh-agent 1217 kali  mem    REG                8,1   169720 1441813 /usr/lib/x86_64-linux-gnu/ld-2.30.so
ssh-agent 1217 kali    0u   CHR                1,3      0t0    2051 /dev/null
ssh-agent 1217 kali    1u   CHR                1,3      0t0    2051 /dev/null
ssh-agent 1217 kali    2u   CHR                1,3      0t0    2051 /dev/null
ssh-agent 1217 kali    3u  unix 0x00000000ae65ddbe      0t0   23977 /tmp/ssh-CG3EFJaD5iRt/agent.1126 type=STREAM

按文件名列出打开的文件

我们可以指定文件名作为参数来列出打开特定文件的所有进程。

句法:

$ sudo lsof [filename] 

例子:

$ sudo lsof /var/log/messages

输出:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
rsyslogd 552 root   12w   REG    8,1   703405 4991786 /var/log/messages

按进程 ID 列出打开的文件

每个文件都分配了一个进程 ID。单个进程可能会打开大量文件。我们可以使用 lsof 命令列出给定进程 ID 的所有打开文件。

我们还可以使用单个命令从一组 PID 中列出所有打开的文件。

我们可以获得由特定进程 ID 打开的文件列表。同样,我们可以使用命令来获取特定进程 ID 未打开的文件列表。

一个系统包含大量进程,每个进程都有打开的文件供使用。一个进程可能有多个子进程,这个进程也称为父进程。lsof 命令与 -R 选项一起使用以获取父进程 ID 打开的文件列表。

列出带有进程 ID 的打开文件

句法:

$ sudo lsof -p [Process ID]

例如:

$ sudo lsof -p 2

输出:

COMMAND  PID USER   FD      TYPE DEVICE SIZE/OFF NODE NAME
kthreadd   2 root  cwd       DIR    8,1    36864    2 /
kthreadd   2 root  rtd       DIR    8,1    36864    2 /
kthreadd   2 root  txt   unknown                      /proc/2/exe

列出多个进程 ID 的打开文件

句法:

$ sudo lsof -p [Process ID 1], [Process ID 2]

例如:

$ sudo lsof -p 2,3

输出:

COMMAND  PID USER   FD      TYPE DEVICE SIZE/OFF NODE NAME
kthreadd   2 root  cwd       DIR    8,1    36864    2 /
kthreadd   2 root  rtd       DIR    8,1    36864    2 /
kthreadd   2 root  txt   unknown                      /proc/2/exe
rcu_gp     3 root  cwd       DIR    8,1    36864    2 /
rcu_gp     3 root  rtd       DIR    8,1    36864    2 /
rcu_gp     3 root  txt   unknown                      /proc/3/exe

列出除一个进程 ID 之外的打开文件

句法:

$ sudo lsof -p ^[Process ID]

例如:

$ sudo lsof -p ^1

输出:

COMMAND    PID  TID TASKCMD         USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
kthreadd     2                      root  cwd       DIR                8,1     36864          2 /
kthreadd     2                      root  rtd       DIR                8,1     36864          2 /
kthreadd     2                      root  txt   unknown                                         /proc/2/exe
rcu_gp       3                      root  cwd       DIR                8,1     36864          2 /
rcu_gp       3                      root  rtd       DIR                8,1     36864          2 /
rcu_gp       3                      root  txt   unknown                                         /proc/3/exe
rcu_par_g    4                      root  cwd       DIR                8,1     36864          2 /
rcu_par_g    4                      root  rtd       DIR                8,1     36864          2 /
rcu_par_g    4                      root  txt   unknown                                         /proc/4/exe
kworker/0    6                      root  cwd       DIR                8,1     36864          2 /
kworker/0    6                      root  rtd       DIR                8,1     36864          2 /
kworker/0    6                      root  txt   unknown                                         /proc/6/exe
mm_percpu    8                      root  cwd       DIR                8,1     36864          2 /
mm_percpu    8                      root  rtd       DIR                8,1     36864          2 /
mm_percpu    8                      root  txt   unknown                                         /proc/8/exe
ksoftirqd    9                      root  cwd       DIR                8,1     36864          2 /
ksoftirqd    9                      root  rtd       DIR                8,1     36864          2 /
ksoftirqd    9                      root  txt   unknown                                         /proc/9/exe
rcu_sched   10                      root  cwd       DIR                8,1     36864          2 /

列出父进程 ID

句法:

$ sudo lsof -R

输出:

COMMAND    PID  TID TASKCMD   PPID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd      1                   0       root  cwd       DIR                8,1     36864          2 /
systemd      1                   0       root  rtd       DIR                8,1     36864          2 /
systemd      1                   0       root  txt       REG                8,1   1591392    1445828 /usr/lib/systemd/systemd
systemd      1                   0       root  mem       REG                8,1   1325424    1442465 /usr/lib/x86_64-linux-gnu/libm-2.30.so
systemd      1                   0       root  mem       REG                8,1    174272    1442049 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.17
systemd      1                   0       root  mem       REG                8,1   1574952    1444070 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0
systemd      1                   0       root  mem       REG                8,1    137424    1442738 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.28.0
systemd      1                   0       root  mem       REG                8,1     67752    1445649 /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0
systemd      1                   0       root  mem       REG                8,1     34904    1445648 /usr/lib/x86_64-linux-gnu/libargon2.so.1
systemd      1                   0       root  mem       REG                8,1    432688    1443266 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1
systemd      1                   0       root  mem       REG                8,1     30776    1442077 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0
systemd      1                   0       root  mem       REG                8,1   3076960    1448872 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
systemd      1                   0       root  mem       REG                8,1     26976    1442133 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0
systemd      1                   0       root  mem       REG                8,1     14592    1442464 /usr/lib/x86_64-linux-gnu/libdl-2.30.so
systemd      1                   0       root  mem       REG                8,1    584360    1442207 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0
systemd      1                   0       root  mem       REG                8,1    146912    1442480 /usr/lib/x86_64-linux-gnu/libpthread-2.30.so

列出包含目录的打开文件

要列出在特定目录中打开文件的进程,我们可以使用 lsof 命令。在一个系统中,既有文件又有目录,所以一个目录除了可以打开普通文件外,还可以打开多个文件。

这个带有 +d 的 lsof 命令显示提供的目录中打开的文件列表,但是,它不会进入子目录。

句法:

$ sudo lsof +d [directory path]

例如:

$ sudo lsof +d /var/log

输出:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
vmtoolsd 538 root    3w   REG    8,1     1675 4981063 /var/log/vmware-vmsvc-root.log
rsyslogd 548 root    7w   REG    8,1  1043642 4980888 /var/log/syslog
rsyslogd 548 root    8w   REG    8,1   121011 4991608 /var/log/user.log
rsyslogd 548 root    9w   REG    8,1   566940 4991786 /var/log/messages
rsyslogd 548 root   10w   REG    8,1   688277 4991537 /var/log/daemon.log
rsyslogd 548 root   11w   REG    8,1   484810 4991568 /var/log/kern.log
rsyslogd 548 root   12w   REG    8,1    54259 4991661 /var/log/debug
rsyslogd 548 root   13w   REG    8,1    69570 4991597 /var/log/auth.log
Xorg     615 root    4w   REG    8,1    32941 4981203 /var/log/Xorg.0.log

+D 选项命令 lsof 在目录的整个深度中搜索所有打开的实例以及它包含的所有文件和目录。

句法:

$ sudo lsof +D [directory path]

例如:

$ sudo lsof +D /var/log

输出:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
systemd-j 370 root  mem    REG    8,1  8388608 4981093 /var/log/journal/4418817cc7e741eda43c550102152982/user-1000.journal
systemd-j 370 root  mem    REG    8,1 16777216 4982013 /var/log/journal/4418817cc7e741eda43c550102152982/system.journal
systemd-j 370 root   22u   REG    8,1 16777216 4982013 /var/log/journal/4418817cc7e741eda43c550102152982/system.journal
systemd-j 370 root   27u   REG    8,1  8388608 4981093 /var/log/journal/4418817cc7e741eda43c550102152982/user-1000.journal
vmtoolsd  538 root    3w   REG    8,1     1675 4981063 /var/log/vmware-vmsvc-root.log
rsyslogd  548 root    7w   REG    8,1  1043544 4980888 /var/log/syslog
rsyslogd  548 root    8w   REG    8,1   121011 4991608 /var/log/user.log
rsyslogd  548 root    9w   REG    8,1   566940 4991786 /var/log/messages
rsyslogd  548 root   10w   REG    8,1   688277 4991537 /var/log/daemon.log
rsyslogd  548 root   11w   REG    8,1   484810 4991568 /var/log/kern.log
rsyslogd  548 root   12w   REG    8,1    54259 4991661 /var/log/debug
rsyslogd  548 root   13w   REG    8,1    69103 4991597 /var/log/auth.log
lightdm   594 root    6w   REG    8,1    35024 4981241 /var/log/lightdm/lightdm.log
unattende 611 root    3w   REG    8,1        0 4994179 /var/log/unattended-upgrades/unattended-upgrades-shutdown.log
Xorg      615 root    1w   REG    8,1      932 4981283 /var/log/lightdm/x-0.log
Xorg      615 root    2w   REG    8,1      932 4981283 /var/log/lightdm/x-0.log
Xorg      615 root    4w   REG    8,1    32941 4981203 /var/log/Xorg.0.log

列出网络协议打开的文件

出于各种目的,系统可以链接到各种网络。Linux中的一切都是一个文件,我们可以检查系统中通过某些网络连接打开的文件。

列出所有 TCP 连接

要列出 TCP 协议中打开的文件,我们可以运行以下命令。

$ sudo lsof -i TCP 

输出:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
chrome  1705 kali   36u  IPv4  34041      0t0  TCP kali:56530->sc-in-f188.1e100.net:5228 (ESTABLISHED)

列出所有 UDP 连接

要列出UDP协议中打开的文件,我们可以运行以下命令。

$ sudo lsof -i UDP 

输出:

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
NetworkMa  543 root   23u  IPv4 370704      0t0  UDP kali:bootpc->_gateway:bootps 
chrome    1659 kali  188u  IPv4  31835      0t0  UDP 224.0.0.251:mdns 
chrome    1705 kali   33u  IPv4 389140      0t0  UDP kali:57224->maa05s21-in-f14.1e100.net:443 
chrome    1705 kali   34u  IPv4 404698      0t0  UDP kali:47806->maa03s37-in-f14.1e100.net:443 
fierce    6870 kali    3u  IPv6 349703      0t0  UDP *:36069 
fierce    6870 kali    4u  IPv6 349705      0t0  UDP *:44305 
fierce    6870 kali    5u  IPv6 349707      0t0  UDP *:34345 
fierce    8730 kali    3u  IPv4 404704      0t0  UDP *:41410 

按端口号列出打开的文件

lsof 有一个命令,专门列出给定端口号上打开的文件,以列出在该端口上运行的所有进程。

句法:

$ sudo lsof -i :[port number]

例如:

$ sudo lsof -i :443

输出:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
 chrome  1705 kali   29u  IPv4 421920      0t0  UDP kali:38514->maa03s36-in-f10.1e100.net:443 
 chrome  1705 kali   33u  IPv4 389140      0t0  UDP kali:57224->maa05s21-in-f14.1e100.net:443 
 chrome  1705 kali   34u  IPv4 416325      0t0  TCP kali:54158->maa05s26-in-f4.1e100.net:443 (ESTABLISHED)
 chrome  1705 kali   44u  IPv4 421960      0t0  TCP kali:55576->maa05s28-in-f14.1e100.net:443 (ESTABLISHED)
 chrome  1705 kali   45u  IPv4 409003      0t0  TCP kali:60958->server-13-227-178-85.bom51.r.cloudfront.net:443 (ESTABLISHED)
 chrome  1705 kali   49u  IPv4 416593      0t0  UDP kali:35535->maa05s26-in-f4.1e100.net:443 
 chrome  1705 kali   50u  IPv4 421943      0t0  TCP kali:58400->maa03s31-in-f3.1e100.net:443 (ESTABLISHED)
 chrome  1705 kali   51u  IPv4 421944      0t0  TCP kali:58402->maa03s31-in-f3.1e100.net:443 (ESTABLISHED)
 chrome  1705 kali   55u  IPv4 420583      0t0  TCP kali:38324->maa03s31-in-f2.1e100.net:https (ESTABLISHED)

列出多个端口号的打开文件

列出所有或多个端口上打开的文件的语法。

句法:

$ sudo lsof -i :[port number1],[port number2]

例如:

$ sudo lsof -i :80,443

输出:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
chrome  1705 kali   29u  IPv4 441892      0t0  UDP kali:40000->maa05s06-in-f3.1e100.net:443 
chrome  1705 kali   33u  IPv4 389140      0t0  UDP kali:57224->maa05s21-in-f14.1e100.net:443 
chrome  1705 kali   34u  IPv4 441368      0t0  TCP kali:49394->a23-58-45-163.deploy.static.akamaitechnologies.com:443 (ESTABLISHED)
chrome  1705 kali   37u  IPv4 427813      0t0  TCP kali:49434->maa05s17-in-f1.1e100.net:443 (ESTABLISHED)
chrome  1705 kali   40u  IPv4 447568      0t0  UDP kali:49476->maa05s13-in-f14.1e100.net:443 
chrome  1705 kali   43u  IPv4 437425      0t0  TCP kali:38810->e2a.google.com:443 (ESTABLISHED)
chrome  1705 kali   44u  IPv4 447569      0t0  TCP kali:57734->maa05s13-in-f14.1e100.net:443 (ESTABLISHED)
chrome  1705 kali   45u  IPv4 420836      0t0  TCP kali:38678->maa05s24-in-f3.1e100.net:443 (ESTABLISHED)
chrome  1705 kali   49u  IPv4 415475      0t0  TCP kali:49728->hem09s03-in-f3.1e100.net:https (ESTABLISHED)
chrome  1705 kali   51u  IPv4 441104      0t0  TCP kali:48426->maa03s37-in-f14.1e100.net:https (ESTABLISHED)
chrome  1705 kali   60u  IPv4 437671      0t0  TCP kali:46060->ec2-54-204-39-132.compute-1.amazonaws.com:https (CLOSE_WAIT)
chrome  1705 kali   62u  IPv4 437494      0t0  TCP kali:48204->maa03s34-in-f10.1e100.net:https (ESTABLISHED)
chrome  1705 kali   65u  IPv4 427420      0t0  TCP kali:35740->maa05s09-in-f14.1e100.net:https (ESTABLISHED)
chrome  1705 kali   68u  IPv4 437785      0t0  TCP kali:50946->ec2-18-139-212-90.ap-southeast-1.compute.amazonaws.com:https (ESTABLISHED)

您还可以按端口范围列出 TCP 或 UDP 的打开文件。

$ sudo lsof -i TCP:1-49151

按 IPv4/IPv6 列出打开的文件

lsof 中有一个选项可以列出 IPv4 或 IPv6 网络连接列表。

仅显示 IPv4 连接。

$ sudo lsof -i4

输出:

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
NetworkMa  543 root   23u  IPv4 407994      0t0  UDP kali:bootpc->_gateway:bootps 
chrome    1659 kali  188u  IPv4  31835      0t0  UDP 224.0.0.251:mdns 
chrome    1705 kali   33u  IPv4 451331      0t0  TCP kali:57550->164.26.241.35.bc.googleusercontent.com:https (ESTABLISHED)
chrome    1705 kali   36u  IPv4  34041      0t0  TCP kali:56530->sc-in-f188.1e100.net:5228 (ESTABLISHED)
chrome    1705 kali   40u  IPv4 451792      0t0  UDP kali:56361->maa05s21-in-f14.1e100.net:443 
chrome    1705 kali   44u  IPv4 455002      0t0  UDP kali:58557->maa05s13-in-f14.1e100.net:443 
chrome    1705 kali   47u  IPv4 454684      0t0  TCP kali:32880->server-13-227-178-85.bom51.r.cloudfront.net:https (ESTABLISHED)
fierce    9485 kali    3u  IPv4 455683      0t0  UDP *:36985 

以下语法仅可用于显示 IPv6 连接。

句法:

$ sudo lsof -i6

输出:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
fierce  6870 kali    3u  IPv6 349703      0t0  UDP *:36069 
fierce  6870 kali    4u  IPv6 349705      0t0  UDP *:44305 
fierce  6870 kali    5u  IPv6 349707      0t0  UDP *:34345

连续运行lsof

重复模式使 lsof 能够以指定的延迟不断重复更新。可以使用“-r”或“+r”选项启用重复模式,其中“+r”将在找不到打开的文件时结束,而“-r”将继续列出直到启动手动中断。每个延迟周期输出将使用“========”分隔。

句法:

$ sudo lsof [options] -r/+r[time-interval]

例如:

$ sudo lsof -u sonar -r5

结论

在本教程中,我们通过示例了解了 lsof 命令及其用法。lsof 提供了许多选项来自定义其输出以满足您的需要。它使您能够轻松快速地组合多个参数以获得所需的输出。

Linux 中读取带空格的文件名
标签:

发表我的评论

电子邮件地址不会被公开。 必填项已用*标注