查看监听端口的命令以下:socket
netstat、lsof、sstcp
lsof命令:ui
一、lsof -i:80 #显示全部打开80端口的进程unix
二、netstat进程
netstat参数以下:ip
-a (all)显示全部选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的所有转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态内存
-p 显示创建相关连接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。资源
netstat -lnpt | grep -w 80 #显示TCP相关的监听80端口的状态路由
三、ssio
ss参数以下:
-h, --help帮助信息
-V, --version程序版本信息
-n, --numeric不解析服务名称
-r, --resolve 解析主机名
-a, --all显示全部套接字(sockets)
-l, --listening显示监听状态的套接字(sockets)
-o, --options 显示计时器信息
-e, --extended 显示详细的套接字(sockets)信息
-m, --memory 显示套接字(socket)的内存使用状况
-p, --processes显示使用套接字(socket)的进程
-i, --info显示 TCP内部信息
-s, --summary显示套接字(socket)使用概况
-4, --ipv4 仅显示IPv4的套接字(sockets)
-6, --ipv6 仅显示IPv6的套接字(sockets)
-0, --packet 显示 PACKET 套接字(socket)
-t, --tcp仅显示 TCP套接字(sockets)
-u, --udp仅显示 UCP套接字(sockets)
-d, --dccp仅显示 DCCP套接字(sockets)
-w, --raw仅显示 RAW套接字(sockets)
-x, --unix仅显示 Unix套接字(sockets)
-f, --family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,支持 unix, inet, inet6, link, netlink
-A, --query=QUERY, --socket=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D, --diag=FILE 将原始TCP套接字(sockets)信息转储到文件
-F, --filter=FILE 从文件中都去过滤器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
ss -ltn | grep -w 80 #显示TCP相关的监听80端口的状态
三者虽然达到的目的相同,可是速度区别却很大:
比较一下速度,ss命令远远快于其余两个命令。
netstat是遍历/proc下面每一个PID目录,ss直接读/proc/net下面的统计信息。因此ss执行的时候消耗资源以及消耗的时间都比netstat少不少