netstat监控网络状态
基本语法
netstat [选项]
选项
选项 | 说明 |
---|---|
-a | 显示所有socket,包括正在监听的 |
-n | 显示进程的IP地址和端口号,不使用域名与服务名 |
-p | 显示程序的名字和进程的PID |
-t | 显示使用TCP协议端口的连接状况 |
-u | 显示使用UDP协议端口的连接状况 |
-l | 只显示正在网络监听的进程(默认选项) |
-r | 显示路由表 |
-c 秒数 | 指定每隔几秒刷新一次网络状态 |
一般使用 netstat -anp
举个🌰
- 查看所有网络服务
[root@localhost ~]# netstat -anput
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
#协议 接收队列 发送队列 本机的IP 远程主机的IP 状态
# 地址及端口号 地址及端口号
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
状态,一种代表正在监听,另一种代表已经建立连接。
- 查看服务名为sshd的服务的信息
netstat -anp | grep sshd
- 查看某进程号监听情况
netstat -anp | grep PID
- 输出每个ip的连接数,以及总的各个状态的连接数
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);}'
- 查找较多
time_wait
连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
本文来自博客园,作者:Lz_蚂蚱,转载请注明原文链接:https://www.cnblogs.com/leizia/p/13767415.html