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 提供了许多选项来自定义其输出以满足您的需要。它使您能够轻松快速地组合多个参数以获得所需的输出。