lsof(list open files)
是一个查看当前系统文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,该文件描述符提供了大量关于这个应用程序本身的信息。
lsof打开的文件可以是:
- 普通文件
- 目录
- 网络文件系统的文件
- 字符或设备文件
- (函数)共享库
- 管道,命名管道
- 符号链接
- 网络文件(例如:NFS file、网络socket,unix域名socket)
- 还有其它类型的文件,等等
通过某个进程号显示该进程打开的文件
lsof -p 11968
列出某个程序所打开的文件信息
lsof -c mysql
列出所有的网络连接
lsof -i
可以指定传输协议
lsof -i tcp/udp
列出谁在使用某个端口
lsof -i :3306
列出被进程号为1234的进程所打开的所有IPV4 network files
lsof -i 4 -a -p 1234
列出端口为:20,21,80相关的所有文件信息,且每隔3秒重复执行
lsof -i :20,21,80 -r 3
netstat
参数说明
-a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字。 -l 仅列出有在 Listen (监听) 的服務状态 -p 显示建立相关链接的程序名 -r 显示路由信息,路由表 -e 显示扩展信息,例如uid等 -s 按各个协议进行统计 -c 每隔一个固定时间,执行该netstat命令
而在MacOS上,-f需要加上地址族,-p需要加上协议TCP或者UDP等
通常用法:
显示所有的TCP连接 Linux
netstat -atnp
显示网卡列表
netstat -i
Mac
如果需要查询inet:netstat -anvf inet
如果需要查询TCP:netstat -anvp tcp
如果需要查询UDP:netstat -anvp udp
windows
netstat -a | findstr "8080"
参考
lsof 一切皆文件 MacOS 端口占用情况,其中 netstat 命令与 CentOS 略有出入 Linux netstat命令
|