netstat是一个排查网络问题时经常会用到的命令,大家应该都不陌生,但具体这个命令有多少种用法,恐怕很少有人能说清楚。这篇文章将逐渐积累netstat的更多用法,持续更新。
第一类用法:显示当前的socket连接明细
netstat -a 可以显示服务器上当前的所有socket连接。当然,这里面的信息很多,下面有几个可以快速筛选的参数:
netstat -at 显示所有的TCP连接netstat -au 显示所有的UDP连接
netstat -l 显示所有本地监听(LISTENING)的连接,同样可以用-t 和-u 来筛选TCP和UDP:
netstat -lt 显示所有本地监听(LISTENING)的TCP连接netstat -lu 显示所有本地监听(LISTENING)的UDP连接
以上命令如果加上-p 参数,会显示关联的进程ID。例如,netstat -ltp 会列出来当前服务器在监听哪个端口,以及它的进程ID和进程名称。
使用ps -ef |grep {pid} 可以查看具体进程的更多信息。
使用lsof -i :{port} 也可以根据端口来查看哪个进程在监听它。
以上命令如果加上-n 参数,则会将地址中的IP和端口显示为具体的数字,而不是一些协议名。比如你本地监听22端口,如果不加-n 参数,则列表中会告诉你这个socket连接是ssh协议的连接,如果加了-n 参数,则会明确地告诉你这个连接使用的是22端口。
第二类用法:网络接口的统计
netstat -in 显示所有网络接口的状态。
各列的解释如下:
Name
Interface name.
Mtu
Maximum transmission unit. The maximum size of packets in bytes that are transmitted using the interface.
Ipkts
Total number of packets received.
Ierrs
Total number of input errors. For example, malformed packets, checksum errors, or insufficient buffer space in the device driver.
Opkts
Total number of packets transmitted.
Oerrs
Total number of output errors. For example, a fault in the local host connection or adapter output queue overrun.
Coll
Number of packet collisions detected.
参考地址 https://www.ibm.com/docs/zh/aix/7.1?topic=command-netstat-in
netstat -I {interface} {interval} 命令可以查看某个网络接口的实时网络,例如:netstat -I en0 1 命令每个一秒钟会显示en0的当前网络状态。
第三类用法:按照协议统计
netstat -s 统计了不同网络协议的当前状态
|