运维工程师秘籍:请收好Linux网络命令集锦

由于nio的普及,ck10k的问题已经成为过去式。现在随便一台服务器,就可以支持数十万级别的连接了。那么我们来算一下,100万的连接需要多少资源。

首先,每一个连接都是文件句柄,所以需要文件描述符数量支持才行,每一个socket内存占用15k-20k之间,这样,仅维护相应socket,就需要20G内存;而广播一个1KB的消息需要占用的带宽为1000M!

查看当前系统的连接

如何看当前系统有多少连接呢?可以使用netstat结合awk进行统计。如下脚本,统计了每一种状态的tcp连接数量


  1. # netstat -antp | awk '{a[$6]++}END{ for(x in a)print x,a[x]}'LISTEN 41CLOSE_WAIT 24ESTABLISHED 150Foreign 1TIME_WAIT 92 

但如果你在一台有上万连接的服务器上执行这个命令,你可能会等上很长时间。所以,我们有了第二代网络状态统计工具:netstat => ss(可别和那个越狱工具搞混了)。


  1. # ss -sTotal: 191 (kernel 220)TCP:   5056 (estab 42, closed 5000, orphaned 3, synrecv 0, timewait 5000/0), ports 3469… 

netstat属于net-tools工具集,而ss属于iproute。其命令对应如下,是时候和net-tools说Bye了。

用途 net-tools iproute
统计 ifconfig ss
地址 netstat ip addr
路由 route ip route
邻居 arp ip neigh
VPN iptunnel ip tunnel
VLAN vconfig ip link
组播 ipmaddr ip maddr

ss命令

基本使用

我们按照使用场景来看下ss的用法。

查看系统正在监听的tcp连接


  1. ss -atr ss -atn #仅ip 

查看系统中所有连接


  1. ss -alt 

查看监听444端口的进程pid


  1. ss -ltp | grep 444 

查看进程555占用了哪些端口


  1. ss -ltp | grep 555 

显示所有udp连接


  1. ss -u -a 

查看TCP sockets,使用-ta选项

查看UDP sockets,使用-ua选项

查看RAW sockets,使用-wa选项

查看UNIX sockets,使用-xa选项

和某个ip的所有连接


  1. ss dst 10.66.224.130ss dst 10.66.224.130:httpss dst 10.66.224.130:smtpss dst 10.66.224.130:443 

显示所有的http连接


  1. ss  dport = :http 

查看连接本机最多的前10个ip地址


  1. netstat -antp | awk '{print $4}' | cut -d ':' -f1 | sort | uniq -c  | sort -n -k1 -r | head -n 10 
【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章