lsof 列出系统打开的所有文件

前言

list open files)命令,用于列出当前系统已经打开的所有文件。lsof命令也可以查看端口是否在被占用。

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

语法格式

lsof命令的语法有大量的参数,可以查看man文档,下面讲解一些比较常用的参数。

列出当前系统已经打开的所有文件

[root@nginx ~]# lsof |less				#列出当前系统已经打开的所有文件,由于很多,所以使用less命令
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   1632744    4853402 /usr/lib/systemd/systemd
systemd      1         root  mem       REG              253,0     19896      66856 /usr/lib64/libattr.so.1.1.0
systemd      1         root  mem       REG              253,0     19248    1037577 /usr/lib64/libdl-2.17.so
systemd      1         root  mem       REG              253,0    402384      50308 /usr/lib64/libpcre.so.1.2.0

lsof命令输出的各列的含义:
COMMAND: 进程的名称
PID: 进程标识符,pid
USER: 进程所有者
FD: 文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE: 文件类型,REG表示文件,DIR表示目录,CHR表示字符,BLK表示块设备,UNIX、FIFO 和 IPv4,分别表示 UNIX 域套接字、先进先出 (FIFO) 队列和网际协议 (IP) 套接字。
DEVICE: 以逗号分隔设备编号(磁盘名称)
SIZE: 文件的大小(bytes)
NODE: 索引节点(文件在磁盘上的标识)
NAME: 打开文件的确切名称

查看指定二进制文件在被哪个进程使用(很有用,用于查找可疑病毒文件查看开了哪些进程)

[root@nginx ~]# lsof /usr/local/nginx/sbin/nginx 			#查看哪个进程在使用/usr/local/nginx/sbin/nginx可执行文件
COMMAND  PID  USER  FD   TYPE DEVICE SIZE/OFF    NODE NAME
nginx   1653  root txt    REG  253,0  3982120 5998707 /usr/local/nginx/sbin/nginx
nginx   1654 nginx txt    REG  253,0  3982120 5998707 /usr/local/nginx/sbin/nginx
nginx   1655 nginx txt    REG  253,0  3982120 5998707 /usr/local/nginx/sbin/nginx
[root@nginx ~]#

查看端口对应的进程(最常用)

-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
[root@iZwz94nju6ojdci4eii4p7Z ~]#  lsof -i :22			#查看使用22号端口的进程
[root@iZwz94nju6ojdci4eii4p7Z ~]#  lsof -i TCP:22		#查看使用tcp协议的22号端口进程
[root@iZwz94nju6ojdci4eii4p7Z ~]#  lsof -i TCP			#查看使用TCP协议打开的进程

查看某个进程打开了哪些文件

c<进程名>:列出指定进程所打开的文件;
[root@node2 ~]# lsof  -c redis-server
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值