基本语法
选项
选项
说明
-a
显示所有socket,包括正在监听的
-n
显示进程的IP地址和端口号,不使用域名与服务名
-p
显示程序的名字和进程的PID
-t
显示使用TCP协议端口的连接状况
-u
显示使用UDP协议端口的连接状况
-l
只显示正在网络监听的进程(默认选项)
-r
显示路由表
-c 秒数
指定每隔几秒刷新一次网络状态
一般使用 netstat -anp
举个🌰
[root@localhost ~]
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:19206 0.0.0.0:* LISTEN 4185/yudian_websvr
tcp 0 0 172.17.32.17:20006 0.0.0.0:* LISTEN 3399/SrvMgr
字段
说明
Proto
网络连接的协议,一般就是TCP协议或者UDP协议。
Recv-Q
表示接收到的数据,已经在本地的缓冲中,但是还没有被进程取走。
Send-Q
表示从本机发送,对方还没有收到的数据,依然在本地的缓冲中,一般是不具备ACK标志的数据包。
Local Address
本机的IP地址和端口号。
Foreign Address
远程主机的IP地址和端口号。
State
状态。常见的状态主要有以下几种。
State:
选项
说明
LISTEN
监听状态,只有TCP协议需要监听,而UDP协议不需要监听。
ESTABLISHED
已经建立连接的状态。如果使用“-l”选项,则看不到已经建立连接的状态。
SYN_SENT
SYN发起包,就是主动发起连接的数据包。
SYN_RECV
接收到主动连接的数据包。
FIN_WAIT1
正在中断的连接。
FIN_WAIT2
已经中断的连接,但是正在等待对方主机进行确认。
TIME_WAIT
连接已经中断,但是套接字依然在网络中等待结束。
CLOSED
套接字没有被使用。
在这些状态中,我们最常用的就是LISTEN
和ESTABLISHED
状态,一种代表正在监听,另一种代表已经建立连接。
netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %sn", a, S[a]);++I}printf("%-20s %sn","TOTAL_IP",I);for(a in s) printf("%-20s %sn",a, s[a]);printf("%-20s %sn","TOTAL_LINK",N);}'
netstat -n|grep TIME_WAIT|awk '{print $5}' |sort |uniq -c|sort -rn|head -n20
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步