目录
一、理论
1.lsof
(1)概念
命令 lsof ( list opened files )负责列出系统中已经打开的文件,包括普通文件,目录,块特殊文件,字符特殊文件,正在执行的文本引用,库,流或网络文件(例如:网络套接字,NFS文件或UNIX域套接字)。
(2)常用参数
表1 lsof常用参数
参数 | 功能 |
-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)无参数执行
执行 lsof
其中,每列参数的含义:
表2 lsof命令每列参数含义
参数 | 含义 |
COMMAND | 命令名称 |
PID | 进程ID |
TID | 线程ID,如果为空代表列出的是进程 |
TASKCMD | 任务名称,通常与 COMMAND 相同 |
USER | 用户ID号或登录名 |
FD | 文件描述符 |
TYPE | 与文件关联结点的类型 |
DEVICE | 设备号 |
SIZE/OFF | 文件大小/偏移量,以字节为单位 |
NODE | 文件结点 |
NAME | 文件挂载点和文件所在的系统 |
二、实验
1.无参数
在终端中直接执行 lsof 命令。
[root@centos2 /]# lsof
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 4096 64 /
systemd 1 root rtd DIR 253,0 4096 64 /
systemd 1 root txt REG 253,0 1523568 68230830 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20040 90151 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 261336 471232 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90664 90130 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,0 157424 90237 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 253,0 23968 90359 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 root mem REG 253,0 19888 90634 /usr/lib64/libattr.so.1.1.0
……
2.-p 参数
执行命令 lsof -p 1,列出 1号 进程打开的文件。
[root@centos2 /]# lsof -p 1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 4096 64 /
systemd 1 root rtd DIR 253,0 4096 64 /
systemd 1 root txt REG 253,0 1523568 68230830 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20040 90151 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 261336 471232 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90664 90130 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,0 157424 90237 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 253,0 23968 90359 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 root mem REG 253,0 19888 90634 /usr/lib64/libattr.so.1.1.0
systemd 1 root mem REG 253,0 19776 64683 /usr/lib64/libdl-2.17.so
systemd 1 root mem REG 253,0 402384 90110 /usr/lib64/libpcre.so.1.2.0
systemd 1 root mem REG 253,0 2127336 64677 /usr/lib64/libc-2.17.so
systemd 1 root mem REG 253,0 144792 64703 /usr/lib64/libpthread-2.17.so
systemd 1 root mem REG 253,0 88720 84 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
systemd 1 root mem REG 253,0 44448 64707 /usr/lib64/librt-2.17.so
systemd 1 root mem REG 253,0 269416 471397 /usr/lib64/libmount.so.1.1.0
systemd 1 root mem REG 253,0 91784 91082 /usr/lib64/libkmod.so.2.2.10
systemd 1 root mem REG 253,0 122984 90361 /usr/lib64/libaudit.so.1.0.0
systemd 1 root mem REG 253,0 61672 550830 /usr/lib64/libpam.so.0.83.1
systemd 1 root mem REG 253,0 20032 90636 /usr/lib64/libcap.so.2.22
……
3.-l 参数
执行命令 lsof -l ,输出中使用用户 ID 代替用户名。USER 列显示的是用户ID而不是用户名。
[root@centos2 /]# lsof -l
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 0 cwd DIR 253,0 4096 64 /
systemd 1 0 rtd DIR 253,0 4096 64 /
systemd 1 0 txt REG 253,0 1523568 68230830 /usr/lib/systemd/systemd
systemd 1 0 mem REG 253,0 20040 90151 /usr/lib64/libuuid.so.1.3.0
systemd 1 0 mem REG 253,0 261336 471232 /usr/lib64/libblkid.so.1.1.0
systemd 1 0 mem REG 253,0 90664 90130 /usr/lib64/libz.so.1.2.7
systemd 1 0 mem REG 253,0 157424 90237 /usr/lib64/liblzma.so.5.2.2
systemd 1 0 mem REG 253,0 23968 90359 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 0 mem REG 253,0 19888 90634 /usr/lib64/libattr.so.1.1.0
……
4. -u 参数
执行命令 lsof -u root,输出 root 用户打开的文件。
[root@centos2 /]# lsof -u root
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 4096 64 /
systemd 1 root rtd DIR 253,0 4096 64 /
systemd 1 root txt REG 253,0 1523568 68230830 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20040 90151 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 261336 471232 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90664 90130 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,0 157424 90237 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 253,0 23968 90359 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 root mem REG 253,0 19888 90634 /usr/lib64/libattr.so.1.1.0
……
5.-c 参数
执行命令 lsof -c sshd,输出 COMMAND 列包含 sshd 的项。
[root@centos2 /]# lsof -c sshd
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1510 root cwd DIR 253,0 4096 64 /
sshd 1510 root rtd DIR 253,0 4096 64 /
sshd 1510 root txt REG 253,0 853024 2450038 /usr/sbin/sshd
sshd 1510 root mem REG 253,0 62184 64695 /usr/lib64/libnss_files-2.17.so
sshd 1510 root mem REG 253,0 68192 90241 /usr/lib64/libbz2.so.1.0.6
sshd 1510 root mem REG 253,0 99944 90322 /usr/lib64/libelf-0.168.so
sshd 1510 root mem REG 253,0 19888 90634 /usr/lib64/libattr.so.1.1.0
sshd 1510 root mem REG 253,0 15688 90389 /usr/lib64/libkeyutils.so.1.5
sshd 1510 root mem REG 253,0 58728 409352 /usr/lib64/libkrb5support.so.0.1
……
6.-d 参数
执行命令 lsof -d 12,输出打开文件描述符 12 的所有项。
[root@centos2 /]# lsof -d 12
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 12u unix 0xffff8800753a7400 0t0 11936 /run/systemd/private
systemd-j 635 root 12u REG 0,19 8388608 1396 /run/log/journal/3144c1ec002b4a5ba24a4201fce78a36/system.journal
auditd 941 root 12u a_inode 0,9 0 7017 [eventfd]
systemd-l 969 root 12u unix 0xffff88007355c400 0t0 18886 socket
dbus-daem 970 dbus 12u unix 0xffff88007355e000 0t0 18906 socket
avahi-dae 976 avahi 12u IPv4 20540 0t0 UDP *:mdns
NetworkMa 1073 root 12u netlink 0t0 22044 KOBJECT_UEVENT
tuned 1513 root 12w CHR 10,61 0t0 1326 /dev/cpu_dma_latency
cupsd 1514 root 12u IPv4 25922 0t0 TCP localhost:ipp (LISTEN)
libvirtd 1593 root 12u unix 0xffff8800760cec00 0t0 27840 /var/run/libvirt/libvirt-admin-sock
gdm 1597 root 12u unix 0xffff880068a13400 0t0 30006 @/tmp/dbus-wO56ln9Y
dnsmasq 1794 root 12r FIFO 0,8 0t0 28702 pipe
X 1965 root 12u CHR 10,63 0t0 1026 /dev/vga_arbiter
gnome-ses 1985 gdm 12u unix 0xffff880064964000 0t0 30154 /tmp/.ICE-unix/1985
dbus-daem 1992 gdm 12u unix 0xffff880064980000 0t0 31043 @/tmp/dbus-8WzejNFdMr
dbus-daem 2003 gdm 12u unix 0xffff88005a2ef800 0t0 32670 @/tmp/dbus-MWHhpKb4yc
gnome-she 2016 gdm 12u unix 0xffff880064984c00 0t0 31045 socket
pulseaudi 2039 gdm 12r a_inode 0,9 0 7017 inotify
ibus-daem 2057 gdm 12u unix 0xffff88005481d400 0t0 33800 @/tmp/dbus-7rkWWgJC
gnome-set 2089 gdm 12r a_inode 0,9 0 7017 inotify
colord 2102 colord 12u unix 0xffff88005a2b8000 0t0 33005 socket
7.fileName
执行命令 lsof /usr/lib64/ld-2.17.so,查看打开文件/usr/lib64/ld-2.17.so的进程项。
[root@centos2 /]# lsof /usr/lib64/ld-2.17.so
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
systemd-j 635 root mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
lvmetad 657 root mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
systemd-u 664 root mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
auditd 941 root mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
audispd 943 root mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
sedispatc 945 root mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
irqbalanc 968 root mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
systemd-l 969 root mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
dbus-daem 970 dbus mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
rtkit-dae 975 rtkit mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
avahi-dae 976 avahi mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
lsmd 977 libstoragemgmt mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
rsyslogd 978 root mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
polkitd 979 polkitd mem REG 253,0 164264 36574 /usr/lib64/ld-2.17.so
……
8. -i 参数
(1)执行命令 lsof -i 4,输出 TYPE 为 IPv4 的所有项。
[root@centos2 /]# lsof -i 4
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 41u IPv4 18403 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 976 avahi 12u IPv4 20540 0t0 UDP *:mdns
avahi-dae 976 avahi 13u IPv4 20541 0t0 UDP *:60660
rsyslogd 978 root 3u IPv4 20409 0t0 TCP *:shell (LISTEN)
chronyd 1015 chrony 1u IPv4 21596 0t0 UDP localhost:323
sshd 1510 root 3u IPv4 24985 0t0 TCP *:ssh (LISTEN)
cupsd 1514 root 12u IPv4 25922 0t0 TCP localhost:ipp (LISTEN)
dnsmasq 1793 nobody 3u IPv4 28688 0t0 UDP *:bootps
(2)执行命令 lsof -i UDP 输出协议类型为 UDP 的所有项。
[root@centos2 /]# lsof -i UDP
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
avahi-dae 976 avahi 12u IPv4 20540 0t0 UDP *:mdns
avahi-dae 976 avahi 13u IPv4 20541 0t0 UDP *:60660
chronyd 1015 chrony 1u IPv4 21596 0t0 UDP localhost:323
chronyd 1015 chrony 2u IPv6 21597 0t0 UDP localhost:323
dnsmasq 1793 nobody 3u IPv4 28688 0t0 UDP *:bootps