lsof 查看进程打开的文件

说明:

        lsof 全称为 list open file。
是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

案例:

        1、直接使用命令 lsof

[root@cenos79 log]# lsof | head
COMMAND     PID   TID    USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
systemd       1          root  cwd       DIR              253,1       4096          2 /
systemd       1          root  rtd       DIR              253,1       4096          2 /
systemd       1          root  txt       REG              253,1    1632744     269418 /usr/lib/systemd/systemd
systemd       1          root  mem       REG              253,1      20064     266479 /usr/lib64/libuuid.so.1.3.0
systemd       1          root  mem       REG              253,1     265576     266471 /usr/lib64/libblkid.so.1.1.0
systemd       1          root  mem       REG              253,1      90176     265736 /usr/lib64/libz.so.1.2.7
systemd       1          root  mem       REG              253,1     157424     266444 /usr/lib64/liblzma.so.5.2.2
systemd       1          root  mem       REG              253,1      23968     266498 /usr/lib64/libcap-ng.so.0.0.0
systemd       1          root  mem       REG              253,1      19896     265924 /usr/lib64/libattr.so.1.1.0
[root@cenos79 log]# 
解释:
1、COMMAND	表示进程或命令的名称。
2、PID		表示进程号。
3、USER		表示进程的所有者。
4、FD		文件扫描符。应用程序通过文件描述符识别该文件。如cwd、txt等。
			4.1、cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改。
			4.2、txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库。
			4.3、0表示标准输出。
			4.4、1表示标准输入。
			4.5、2表示标准错误。
			一般在标准输出、标准错误、标准输入后还跟着文件状态模式:r、w、u等。
			u、表示该文件被打开并处于读取/写入模式。
			r、表示该文件被打开并处于只读模式。
			w、表示该文件被打开并处于写入模式。
			-:表示该文件的状态模式为unknow,且被锁定。
			空格:表示该文件的状态模式为unknow,且没有锁定。
			
5、TYPE		文件类型,如DIR、REG等,常见的文件类型。
			5.1、DIR:表示目录。
			5.2、CHR:表示字符类型。
			5.3、BLK:块设备类型。
			5.4、UNIX: UNIX 域套接字。
			5.5、FIFO:先进先出 (FIFO) 队列。
			5.6、IPv4:网际协议 (IP) 套接字。
6、DEVICE	指定磁盘的名称。
7、SIZE/OFF 文件的大小。
8、NODE		索引节点(文件在磁盘上的标识)。
9、NAME		打开文件的确切名称。

        2、查看某个文件的进程。

[root@cenos79 log]# lsof /var/log/messages | column -t
COMMAND   PID    USER  FD  TYPE  DEVICE  SIZE/OFF  NODE    NAME
rsyslogd  15056  root  6w  REG   253,1   62463     132212  /var/log/messages
[root@cenos79 log]# 
案例中表示, /var/log/messages 是由 rsyslogd 进程在使用。

        3、-c 进程名称。 显示指定进程名称所打开的文件。

-c 进程名称。 显示指定进程名称所打开的文件。
[root@cenos79 log]# lsof -c systemd
COMMAND     PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
systemd       1 root  cwd       DIR              253,1     4096          2 /
systemd       1 root  rtd       DIR              253,1     4096          2 /
systemd       1 root  txt       REG              253,1  1632744     269418 /usr/lib/systemd/systemd
systemd       1 root  mem       REG              253,1    20064     266479 /usr/lib64/libuuid.so.1.3.0
systemd       1 root  mem       REG              253,1   265576     266471 /usr/lib64/libblkid.so.1.1.0
systemd       1 root  mem       REG              253,1    90176     265736 /usr/lib64/libz.so.1.2.7
systemd       1 root  mem       REG              253,1   157424     266444 /usr/lib64/liblzma.so.5.2.2
systemd       1 root  mem       REG              253,1    23968     266498 /usr/lib64/libcap-ng.so.0.0.0

        4、-p pid     显示指定进程号所打开的文件。

[root@cenos79 log]# lsof -p 1 | head
COMMAND PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
systemd   1 root  cwd       DIR              253,1     4096          2 /
systemd   1 root  rtd       DIR              253,1     4096          2 /
systemd   1 root  txt       REG              253,1  1632744     269418 /usr/lib/systemd/systemd
systemd   1 root  mem       REG              253,1    20064     266479 /usr/lib64/libuuid.so.1.3.0
systemd   1 root  mem       REG              253,1   265576     266471 /usr/lib64/libblkid.so.1.1.0
systemd   1 root  mem       REG              253,1    90176     265736 /usr/lib64/libz.so.1.2.7
systemd   1 root  mem       REG              253,1   157424     266444 /usr/lib64/liblzma.so.5.2.2
systemd   1 root  mem       REG              253,1    23968     266498 /usr/lib64/libcap-ng.so.0.0.0
systemd   1 root  mem       REG              253,1    19896     265924 /usr/lib64/libattr.so.1.1.0

        5、-u username  列表某个用户打开的文件。

[root@cenos79 log]# lsof -u root | head
COMMAND     PID USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
systemd       1 root  cwd       DIR              253,1       4096          2 /
systemd       1 root  rtd       DIR              253,1       4096          2 /
systemd       1 root  txt       REG              253,1    1632744     269418 /usr/lib/systemd/systemd
systemd       1 root  mem       REG              253,1      20064     266479 /usr/lib64/libuuid.so.1.3.0
systemd       1 root  mem       REG              253,1     265576     266471 /usr/lib64/libblkid.so.1.1.0
systemd       1 root  mem       REG              253,1      90176     265736 /usr/lib64/libz.so.1.2.7
systemd       1 root  mem       REG              253,1     157424     266444 /usr/lib64/liblzma.so.5.2.2
systemd       1 root  mem       REG              253,1      23968     266498 /usr/lib64/libcap-ng.so.0.0.0
systemd       1 root  mem       REG              253,1      19896     265924 /usr/lib64/libattr.so.1.1.0

        6、lsof -c mysql -c httpd 列出多个程序打开的文件。

COMMAND   PID  USER   FD   TYPE             DEVICE  SIZE/OFF      NODE NAME
mysqld  17418 mysql  cwd    DIR              253,1      4096   2517605 /www/server/data
mysqld  17418 mysql  rtd    DIR              253,1      4096         2 /
mysqld  17418 mysql  txt    REG              253,1 252004608    280945 /usr/sbin/mysqld
mysqld  17418 mysql  mem    REG              253,1     68192    266453 /usr/lib64/libbz2.so.1.0.6
mysqld  17418 mysql  mem    REG              253,1    157424    266444 /usr/lib64/liblzma.so.5.2.2
mysqld  17418 mysql  mem    REG              253,1     90176    265736 /usr/lib64/libz.so.1.2.7
httpd   26300 apache    0r      CHR                1,3       0t0      5334 /dev/null
httpd   26300 apache    1u     unix 0xffff9b86f9b0c800       0t0 304342850 socket
httpd   26300 apache    2w      REG              253,1     58055    132003 /var/log/httpd/error_log
httpd   26300 apache    3u     IPv4          304342860       0t0       TCP *:http (LISTEN)
httpd   26300 apache    4r     FIFO                0,9       0t0 361090317 pipe

        7、lsof -p 1,2,3 | head 打开多个进程号的文件。

[root@cenos79 log]# lsof -p 1,2,3 | head
COMMAND   PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
systemd     1 root  cwd       DIR              253,1     4096          2 /
systemd     1 root  rtd       DIR              253,1     4096          2 /
systemd     1 root  txt       REG              253,1  1632744     269418 /usr/lib/systemd/systemd

        8、-i 通过监听指定的协议、端口和主机等信息,列出符合条件的进程信息。

[root@cenos79 log]# lsof -i tcp
COMMAND     PID   USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
sshd        416   root    3u  IPv4    203042      0t0  TCP *:ssh (LISTEN)
httpd      3810 apache    3u  IPv4 304342860      0t0  TCP *:http (LISTEN)
httpd      3812 apache    3u  IPv4 304342860      0t0  TCP *:http (LISTEN)
httpd      3815 apache    3u  IPv4 304342860      0t0  TCP *:http (LISTEN)
BT-Panel   9892   root    5u  IPv4 303653460      0t0  TCP *:ddi-tcp-1 (LISTEN)
sshd      10154   root    3u  IPv4 364460418      0t0  TCP iZ2zeho556ymkh0betn2r0Z:ssh->114.243.122.141:51036 (ESTABLISHED)
nginx     10522   root    6u  IPv4 324793554      0t0  TCP *:webcache (LISTEN)

        9、查看指定的 tcp 端口。

[root@cenos79 log]# lsof -i tcp:80
COMMAND     PID   USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
httpd      3810 apache    3u  IPv4 304342860      0t0  TCP *:http (LISTEN)
httpd      3812 apache    3u  IPv4 304342860      0t0  TCP *:http (LISTEN)
httpd      3815 apache    3u  IPv4 304342860      0t0  TCP *:http (LISTEN)
httpd     14911   root    3u  IPv4 304342860      0t0  TCP *:http (LISTEN)
httpd     18716 apache    3u  IPv4 304342860      0t0  TCP *:http (LISTEN)
httpd     18717 apache    3u  IPv4 304342860      0t0  TCP *:http (LISTEN)
httpd     18718 apache    3u  IPv4 304342860      0t0  TCP *:http (LISTEN)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值