【系统运维】使用lsof命令查看文件占用
一、lsof命令介绍
lsof命令用于查看进程打开的文件,而在Unix中一切皆文件,也就是说使用该工具可以查看所有被请求的东西,包括TCP连接、指定端口、网络连接等。
二、lsof命令示例
1、查看指定文件被调用情况
lsof /data/mysql3306/log/binlog/mysql-bin.000002
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、经过上面的步骤后基本已经可以找出这些可疑程序和脚本了,只需要删除即可恢复
版权声明:本文章版权归数据库运维网(www.ywdba.cn)所有。如需引用本站内容,请注明来源及作者。
评论