命令安装
yum install lsof
简介
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
lsof可以查看打开的文件是:
参数选项
-c<进程名>:列出指定进程所打开的文件;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-a:列出打开文件存在的进程;
-g:列出GID号进程详情;
-u:列出UID号进程详情;
-h:显示帮助信息;
-v:显示版本信息。
实例
1、命令:losf
# lsof
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 224 64 /
systemd 1 root rtd DIR 253,0 224 64 /
systemd 1 root txt REG 253,0 1616360 33728020 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20112 44894 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 265624 44898 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90248 249589 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,0 157424 44892 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 253,0 23968 44926 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 root mem REG 253,0 19896 41626 /usr/lib64/libattr.so.1.1.0
systemd 1 root mem REG 253,0 19288 248961 /usr/lib64/libdl-2.17.so
systemd 1 root mem REG 253,0 402384 41637 /usr/lib64/libpcre.so.1.2.0
systemd 1 root mem REG 253,0 2151672 248955 /usr/lib64/libc-2.17.so
输出内容详解:
查看文件由哪个进程打开
查看memcached文件被哪个进程打开
# lsof /usr/bin/memcached
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
memcached 8015 memcached txt REG 253,0 111376 51801277 /usr/bin/memcached
2、lsof -i 命令
列出所有网络连接
# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
chronyd 5510 chrony 1u IPv4 36214 0t0 UDP localhost:323
chronyd 5510 chrony 2u IPv6 36215 0t0 UDP localhost:323
sshd 6480 root 3u IPv4 43653 0t0 TCP *:ssh (LISTEN)
sshd 6480 root 4u IPv6 43655 0t0 TCP *:ssh (LISTEN)
haproxy 6504 haproxy 6u IPv4 43647 0t0 UDP *:53644
haproxy 6522 haproxy 1u IPv4 71072 0t0 TCP node1:36034->node2:sun-sr-https (SYN_SENT)
haproxy 6522 haproxy 5u IPv4 43646 0t0 TCP *:10086 (LISTEN)
haproxy 6522 haproxy 6u IPv4 43647 0t0 UDP *:53644
haproxy 6522 haproxy 7u IPv4 43648 0t0 TCP *:pcsync-https (LISTEN)
sshd 6973 root 3u IPv4 44746 0t0 TCP node1:ssh->desktop-f5r4pho.huateng.com:62319 (ESTABLISHED)
memcached 8015 memcached 26u IPv4 62328 0t0 TCP *:memcache (LISTEN)
memcached 8015 memcached 27u IPv6 62329 0t0 TCP *:memcache (LISTEN)
memcached 8015 memcached 28u IPv4 62332 0t0 UDP *:memcache
memcached 8015 memcached 29u IPv6 62333 0t0 UDP *:memcache
查看11211端口是哪个进程在使用
# lsof -i :11211
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
memcached 8015 memcached 26u IPv4 62328 0t0 TCP *:memcache (LISTEN)
memcached 8015 memcached 27u IPv6 62329 0t0 TCP *:memcache (LISTEN)
memcached 8015 memcached 28u IPv4 62332 0t0 UDP *:memcache
memcached 8015 memcached 29u IPv6 62333 0t0 UDP *:memcache
列出所有TCP/UDP网络连接信息
# lsof -i tcp
# lsof -i udp
列出80端口TCP协议的所有连接
# lsof -i tcp:80
列出25端口UDP协议的所有连接信息
# lsof -i udp:25
列出目前连接到主机node1上端口为20,21,22,25,53,80相关的所有文件信息,且每隔3秒执行一次
# lsof -i @node1:20,21,22,25,53,80 -r 3
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 6973 root 3u IPv4 44746 0t0 TCP node1:ssh->desktop-f5r4pho.huateng.com:62319 (ESTABLISHED)
3、lsof -c 命令
列出以haproxy开头的进程打开的文件
# lsof -c haproxy
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
haproxy-s 6484 root cwd DIR 253,0 224 64 /
haproxy-s 6484 root rtd DIR 253,0 224 64 /
haproxy-s 6484 root txt REG 253,0 11392 554932 /usr/sbin/haproxy-systemd-wrapper
haproxy-s 6484 root mem REG 253,0 155784 41653 /usr/lib64/libselinux.so.1
haproxy-s 6484 root mem REG 253,0 105824 249277 /usr/lib64/libresolv-2.17.so
4、lsof -p 命令
列出指定进程打开的文件列表
# lsof -p 6484
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
haproxy-s 6484 root cwd DIR 253,0 224 64 /
haproxy-s 6484 root rtd DIR 253,0 224 64 /
haproxy-s 6484 root txt REG 253,0 11392 554932 /usr/sbin/haproxy-systemd-wrapper
5、lsof -u 命令
列出指定用户打开的文件列表
# lsof -u root
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 224 64 /
systemd 1 root rtd DIR 253,0 224 64 /
systemd 1 root txt REG 253,0 1616360 33728020 /usr/lib/systemd/systemd
将所有的TCP连接和指定用户打开的文件列表信息一起输出
# lsof -u root -i tcp
将指定用户打开的文件列表,同时是TCP网络连接的信息输出
# lsof -a -u root -i tcp
6、lsof +d 命令
列出目录下被进程打开的文件列表
# lsof +d /etc/sysconfig/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 6975 root cwd DIR 253,0 4096 33603998 /etc/sysconfig
lsof 9630 root cwd DIR 253,0 4096 33603998 /etc/sysconfig
lsof 9631 root cwd DIR 253,0 4096 33603998 /etc/sysconfig
7、lsof +D 命令
递归搜索目录下被进程打开的文件列表
# lsof +D /usr/lib/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root txt REG 253,0 1616360 33728020 /usr/lib/systemd/systemd
systemd-j 3099 root txt REG 253,0 346280 33728034 /usr/lib/systemd/systemd-journald
systemd-u 3142 root txt REG 253,0 416304 33728053 /usr/lib/systemd/systemd-udevd
| 留言与评论(共有 0 条评论) |