【系统运维】使用lsof命令查看文件占用

TangLu 未命名 2022-03-18 17726 0

一、lsof命令介绍

lsof命令用于查看进程打开的文件,而在Unix中一切皆文件,也就是说使用该工具可以查看所有被请求的东西,包括TCP连接、指定端口、网络连接等。


二、lsof命令示例

1、查看指定文件被调用情况

lsof /data/mysql3306/log/binlog/mysql-bin.000002

lsof.png

2、查看指定用户打开的文件信息

lsof  -u username


3、查看指定进程所打开的文件信息

lsof -c mysql  #也可以写为lsof|grep mysql


4、列出多个程序打开的文件信息,lsof默认将不同的选项进行"或"操作,所以这里还可以指定其他条件进行查询

lsof -c mysql -c nginx
lsof -u test -c mysql


5、通过进程PID查询打开的文件

lsof -p 16029


6、通过网络连接查询

# 列出所有tcp连接信息
lsof  -i tcp

# 列出所有udp连接信息
lsof  -i udp

# 列出指定端口被使用情况
lsof -i :3306
lsof -i tcp:80

# 列出某个用户的所有活跃的网络端口,这里使用-a进行"与"查询
lsof  -u test -i  -a


三、通过lsof定位服务器CPU消耗异常案例

1、使用top命令查看是哪个PID进程消耗了CPU资源,其执行用户是否可疑

2、使用"lsof -p PID"命令来查询该PID开启了哪些进程

3、分析第二步中的可疑进程,比如有没有在执行一些奇怪的shell脚本,有没有开启特殊端口

4、使用"lsof -i :port"查看被开启的特殊端口

5、经过上面的步骤后基本已经可以找出这些可疑程序和脚本了,只需要删除即可恢复


评论