Linux命令--ss命令的参数及使用详解
ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
一、ss命令的参数如下
Usage: ss [ OPTIONS ] ss [ OPTIONS ] [ FILTER ] -h, --help this message #显示帮助菜单 -V, --version output version information #输出版本信息 -n, --numeric don't resolve service names #不解析服务名 -r, --resolve resolve host names #解析主机名 -a, --all display all sockets #显示所有的套接字 -l, --listening display listening sockets #显示监听状态的socket -o, --options show timer information #显示计时器信息 -e, --extended show detailed socket information #展示详细的socket信息 -m, --memory show socket memory usage #展示socket的内存使用 -p, --processes show process using socket #展示使用socket的进程 -i, --info show internal TCP information #展示tcp内部信息 -s, --summary show socket usage summary #展示socket使用汇总 -4, --ipv4 display only IP version 4 sockets #只显示ipv4的sockets -6, --ipv6 display only IP version 6 sockets #只显示ipv6的sockets -0, --packet display PACKET sockets #显示包经过的网络接口 -t, --tcp display only TCP sockets #显示tcp套接字 -u, --udp display only UDP sockets #显示udp套接字 -d, --dccp display only DCCP sockets #显示dccp套接字 -w, --raw display only RAW sockets #显示raw套接字 -x, --unix display only Unix domain sockets #显示unix套接字 -f, --family=FAMILY display sockets of type FAMILY #显示指定类型的套接字 -A, --query=QUERY, --socket=QUERY #查看某种类型 QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY] -D, --diag=FILE Dump raw information about TCP sockets to FILE #将关于TCP套接字的原始信息转储到文件中 -F, --filter=FILE read filter information from FILE #使用此参数指定的过滤规则文件,过滤某种状态的连接 FILTER := [ state STATE-FILTER ] [ EXPRESSION ] STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES} TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing} connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing} synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing} bucket := {syn-recv|time-wait} big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listen|closing}
二、ss命令的使用
ss -l 显示本地打开的所有端口 ss -pl 显示每个进程具体打开的socket ss -t -a 显示所有tcp socket ss -u -a 显示所有的UDP Socekt ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有已建立的SMTP连接 ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接 ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程 ss -s 列出当前socket详细信息
三、ss与 netstat对比:
ss命令是iproute工具集(CentOS 最小化安装带有);netstat命令是net-tools工具集;
当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。
天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。(但仍然比 netstat要快。)
四、如果没有ss命令,可以如下安装:
[root@localhost ~]# yum install iproute iproute-doc
参考或来源:
https://blog.csdn.net/jiajiren11/article/details/80887528
https://blog.csdn.net/fenglailea/article/details/51810977
https://www.cnblogs.com/kevingrace/p/6211509.html