位置: 编程技术 - 正文
推荐整理分享linux命令大全之ss命令详解(获取socket统计信息)(linux命令合集),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:linux命令大全手册,linux命令大全手册,linux命令大全详解,linux命令-s,linux命令-s,linux命令大全详解,linux命令大全chm版,linuxsh命令,内容如对您有帮助,希望把文章链接给更多的朋友!
ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。(但仍然比 netstat要快。)
1.命令格式:ss [参数]ss [参数] [过滤]
2.命令功能:ss(Socket Statistics的缩写)命令可以用来获取 socket统计信息,此命令输出的结果类似于 netstat输出的内容,但它能显示更多更详细的 TCP连接状态的信息,且比 netstat 更快速高效。它使用了 TCP协议栈中 tcp_diag(是一个用于分析统计的模块),能直接从获得第一手内核信息,这就使得 ss命令快捷高效。在没有 tcp_diag,ss也可以正常运行。
3.命令参数:-h, --help 帮助信息-V, --version 程序版本信息-n, --numeric 不解析服务名称-r, --resolve 解析主机名-a, --all 显示所有套接字(sockets)-l, --listening 显示监听状态的套接字(sockets)-o, --options 显示计时器信息-e, --extended 显示详细的套接字(sockets)信息-m, --memory 显示套接字(socket)的内存使用情况-p, --processes 显示使用套接字(socket)的进程-i, --info 显示 TCP内部信息-s, --summary 显示套接字(socket)使用概况-4, --ipv4 仅显示IPv4的套接字(sockets)-6, --ipv6 仅显示IPv6的套接字(sockets)-0, --packet 显示 PACKET 套接字(socket)-t, --tcp 仅显示 TCP套接字(sockets)-u, --udp 仅显示 UCP套接字(sockets)-d, --dccp 仅显示 DCCP套接字(sockets)-w, --raw 仅显示 RAW套接字(sockets)-x, --unix 仅显示 Unix套接字(sockets)-f, --family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,支持 unix, inet, inet6, link, netlink-A, --query=QUERY, --socket=QUERY QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]-D, --diag=FILE 将原始TCP套接字(sockets)信息转储到文件 -F, --filter=FILE 从文件中都去过滤器信息 FILTER := [ state TCP-STATE ] [ EXPRESSION ]
4.使用实例:实例1:显示TCP连接命令:ss -t -a输出:复制代码代码如下:[root@localhost ~]# ss -t -aState Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 0 .0.0.1:smux *:* LISTEN 0 0 *: *:* LISTEN 0 0 *:ssh *:* ESTAB 0 0 ...:ssh .2.0.: [root@localhost ~]#
实例2:显示 Sockets 摘要命令:ss -s输出:复制代码代码如下:[root@localhost ~]# ss -sTotal: (kernel )TCP: 4 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 3</p><p>Transport Total IP IPv6* - - RAW 0 0 0 UDP 5 5 0 TCP 4 4 0 INET 9 9 0 FRAG 0 0 0 [root@localhost ~]# 说明:列出当前的established, closed, orphaned and waiting TCP sockets
实例3:列出所有打开的网络连接端口命令:ss -l输出:复制代码代码如下:[root@localhost ~]# ss -lRecv-Q Send-Q Local Address:Port Peer Address:Port 0 0 .0.0.1:smux *:* 0 0 *: *:* 0 0 *:ssh *:* [root@localhost ~]#
实例4:查看进程使用的socket命令:ss -pl输出:复制代码代码如下:[root@localhost ~]# ss -plRecv-Q Send-Q Local Address:Port Peer Address:Port 0 0 .0.0.1:smux *:* users:(("snmpd",,8))0 0 *: *:* users:(("svnserve",,3))0 0 *:ssh *:* users:(("sshd",,3))[root@localhost ~]#
实例5:找出打开套接字/端口应用程序命令:ss -lp | grep 输出:复制代码代码如下:[root@localhost ~]# ss -lp|grep 0 *: *:* users:(("fmsedge",,))0 0 .0.0.1: *:* users:(("fmsedge",,))[root@localhost ~]# ss -lp|grep 0 *: *:* users:(("mysqld",,))[root@localhost ~]#
实例6:显示所有UDP Sockets命令:ss -u -a输出:复制代码代码如下:[root@localhost ~]# ss -u -aState Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 .0.0.1:syslog *:* UNCONN 0 0 *:snmp *:* ESTAB 0 0 ...: ...:domain [root@localhost ~]#
实例7:显示所有状态为established的SMTP连接命令:ss -o state established '( dport = :smtp or sport = :smtp )' 输出:复制代码代码如下:[root@localhost ~]# ss -o state established '( dport = :smtp or sport = :smtp )' Recv-Q Send-Q Local Address:Port Peer Address:Port [root@localhost ~]#
实例8:显示所有状态为Established的HTTP连接命令:ss -o state established '( dport = :http or sport = :http )' 输出:复制代码代码如下:[root@localhost ~]# ss -o state established '( dport = :http or sport = :http )' Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 ...: ...:http [root@localhost ~]#
实例9:列举出处于 FIN-WAIT-1状态的源端口为 或者 ,目标网络为 ..7/所有 tcp套接字命令:ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst ..7/
实例:用TCP 状态过滤Sockets:命令:复制代码代码如下:ss -4 state FILTER-NAME-HERE ss -6 state FILTER-NAME-HERE输出:复制代码代码如下:[root@localhost ~]#ss -4 state closing Recv-Q Send-Q Local Address:Port Peer Address:Port 1 ...:http ...: 说明:FILTER-NAME-HERE 可以代表以下任何一个:复制代码代码如下:establishedsyn-sentsyn-recvfin-wait-1fin-wait-2time-waitclosedclose-waitlast-acklistenclosingall : 所有以上状态connected : 除了listen and closed的所有状态synchronized :所有已连接的状态除了syn-sentbucket : 显示状态为maintained as minisockets,如:time-wait和syn-recv.big : 和bucket相反.
实例:匹配远程地址和端口号命令:复制代码代码如下:ss dst ADDRESS_PATTERNss dst ..1.5ss dst ...:http ss dst ...:smtp ss dst ...:输出:复制代码代码如下:[root@localhost ~]# ss dst ...State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: [root@localhost ~]# ss dst ...:httpState Recv-Q Send-Q Local Address:Port Peer Address:Port [root@localhost ~]# ss dst ...:State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 ...: ...: [root@localhost ~]#
实例:匹配本地地址和端口号命令:复制代码代码如下:ss src ADDRESS_PATTERNss src ...ss src ...:httpss src ...:ss src ...:smtpss src ...:输出:复制代码代码如下:[root@localhost ~]# ss src ...:State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: ...: ESTAB 0 0 ...: .2.1.: ESTAB 0 0 ...: .2.1.: ESTAB 0 0 ...: .2.1.: ESTAB 0 0 ...: .2.1.: ESTAB 0 0 ...: .2.1.: ESTAB 0 0 ...: .2.1.: ESTAB 0 0 ...: .2.1.: [root@localhost ~]#
实例:将本地或者远程端口和一个数比较命令:复制代码代码如下:ss dport OP PORT ss sport OP PORT输出:复制代码代码如下:[root@localhost ~]# ss sport = :http [root@localhost ~]# ss dport = :http [root@localhost ~]# ss dport > : [root@localhost ~]# ss sport > : [root@localhost ~]# ss sport < : [root@localhost ~]# ss sport eq : [root@localhost ~]# ss dport != : [root@localhost ~]# ss state connected sport = :http [root@localhost ~]# ss ( sport = :http or sport = :https ) [root@localhost ~]# ss -o state fin-wait-1 ( sport = :http or sport = :https ) dst ..1/说明:ss dport OP PORT 远程端口和一个数比较;ss sport OP PORT 本地端口和一个数比较。OP 可以代表以下任意一个: <= or le : 小于或等于端口号>= or ge : 大于或等于端口号== or eq : 等于端口号!= or ne : 不等于端口号< or gt : 小于端口号> or lt : 大于端口号
实例:ss 和 netstat 效率对比命令:复制代码代码如下:time netstat -attime ss输出:复制代码代码如下:[root@localhost ~]# time ss real 0m0.suser 0m0.ssys 0m0.s[root@localhost ~]# [root@localhost ~]# time netstat -atreal 2m.suser 0m0.ssys 0m0.s[root@localhost ~]#说明:用time 命令分别获取通过netstat和ss命令获取程序和概要占用资源所使用的时间。在服务器连接数比较多的时候,netstat的效率完全没法和ss比。
Linux磁盘管理之df命令详细介绍和使用实例(统计文件或目录的磁盘占用情况) 1.命令格式:du[选项][文件]2.命令功能:显示每个文件和目录的磁盘使用空间。3.命令参数:-a或-all显示目录中个别文件的大小。-b或-bytes显示目录或
linux top命令详解和使用实例及使用技巧(监控linux的系统状况) 下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程
linux free命令详解和使用实例(查看内存使用率) 1.命令格式:free[参数]2.命令功能:free命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略3
标签: linux命令合集
本文链接地址:https://www.jiuchutong.com/biancheng/356960.html 转载请保留说明!上一篇:linux命令大全之telnet命令详解(linux远程登录)(linux 命令详解)
下一篇:Linux磁盘管理之df命令详细介绍和使用实例(统计文件或目录的磁盘占用情况) (linux磁盘管理fdisk)
友情链接: 武汉网站建设