每日linux回顾之netstat
Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
先看一下--help吧
-r, --route display routing table
-I, --interfaces=<Iface> display interface table for <Iface>
-i, --interfaces display interface table
-g, --groups display multicast group memberships
-s, --statistics display networking statistics (like SNMP)
-M, --masquerade display masqueraded connections
-v, --verbose be verbose
-n, --numeric don't resolve names
--numeric-hosts don't resolve host names
--numeric-ports don't resolve port names
--numeric-users don't resolve user names
-N, --symbolic resolve hardware names
-e, --extend display other/more information
-p, --programs display PID/Program name for sockets
-c, --continuous continuous listing
-l, --listening display listening server sockets
-a, --all, --listening display all sockets (default: connected)
-o, --timers display timers
-F, --fib display Forwarding Information Base (default)
-C, --cache display routing cache instead of FIB
-T, --notrim stop trimming long addresses
-Z, --context display SELinux security context for sockets
可以看到netstat的选项还是很多的
netstat -r 打印路由
netstat -a 显示所有socket,包括正在监听的。
netstat -t 显示TCP协议的连接情况
netstat -u 显示UDP协议的连接情况。
netstat -p 显示建立相关连接的程序名和PID。
netstat -n 以网络IP地址代替名称,显示出网络连接情形。
nststat -l 显示监听的socket
举一些常用的案例
1、查看tcp链接(通过awk计算,汇总连接数)
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'
例:
CLOSE_WAIT 52
ESTABLISHED 146
FIN_WAIT2 2
SYN_SENT 36
TIME_WAIT 693

浙公网安备 33010602011771号