Linux的ss命令如何使用
Linux的ss命令如何使用
这篇文章主要讲解了“Linux的ss命令如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux的ss命令如何使用”吧!
Linux常用命令ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
语法:
ss[options][FILTER]1.
实例
1.列出已建立的连接
默认情况下,如果我们运行ss命令而没有指定其他选项,它将显示所有已建立连接的打开的非侦听套接字的列表,例如TCP,UDP或UNIX套接字。
[root@renwolecom~]#ss|head-n5NetidStateRecv-QSend-QLocalAddress:PortPeerAddress:Portu_strESTAB00*19098*18222u_strESTAB00*19441*19440u_strESTAB00*19440*19441u_strESTAB00*19396*193971.2.3.4.5.6.
2.显示监听套接字
我们可以使用-l选项专门列出当前正在侦听连接的套接字,而不是列出所有的套接字。
[root@renwolecom~]#ss-ltStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128*:http*:*LISTEN0100127.0.0.1:smtp*:*LISTEN0128*:entexthigh*:*LISTEN0128172.28.204.62:zabbix-trapper*:*LISTEN0128127.0.0.1:cslistener*:*LISTEN080:::mysql:::*LISTEN0100::1:smtp:::*LISTEN0128:::entexthigh:::*1.2.3.4.5.6.7.8.9.10.
在这个示例中,我们还使用-t选项只列出TCP,稍后将对此进行详细说明。在后面的例子中,你会看到我将结合多种选择,以快速过滤掉,从而达到我们的目的。
3.显示进程
我们可以用-p选项打印出拥有套接字的进程或PID号。
[root@renwolecom~]#ss-plNetidStateRecv-QSend-QLocalAddress:PortPeerAddress:PorttcpLISTEN0128:::http:::*users:(("httpd",pid=10522,fd=4),("httpd",pid=10521,fd=4),("httpd",pid=10520,fd=4),("httpd",pid=10519,fd=4),("httpd",pid=10518,fd=4),("httpd",pid=10516,fd=4))1.2.3.4.
在上面的例子中我只列出了一个结果,没有进行进一步选项,因为ss的完整输出打印出超过500行到标准输出。所以我只列出一条结果,由此我们可以看到服务器上运行的各种Apache进程ID。
4.不解析服务名称
默认情况下,ss只会解析端口号,例如在下面的行中,我们可以看到172.28.204.62:mysql,其中mysql被列为本地端口。
[root@renwolecom~]#ssNetidStateRecv-QSend-QLocalAddress:PortPeerAddress:PorttcpESTAB00::ffff:172.28.204.62:mysql::ffff:172.28.204.62:38920tcpESTAB00::ffff:172.28.204.62:mysql::ffff:172.28.204.62:51598tcpESTAB00::ffff:172.28.204.62:mysql::ffff:172.28.204.62:51434tcpESTAB00::ffff:172.28.204.62:mysql::ffff:172.28.204.62:363601.2.3.4.5.6.
但是,如果我们指定-n选项,看到的是端口号而不是服务名称。
[root@renwolecom~]#ss-nNetidStateRecv-QSend-QLocalAddress:PortPeerAddress:PorttcpESTAB00::ffff:172.28.204.62:3306::ffff:172.28.204.62:38920tcpESTAB00::ffff:172.28.204.62:3306::ffff:172.28.204.62:51598tcpESTAB00::ffff:172.28.204.62:3306::ffff:172.28.204.62:51434tcpESTAB00::ffff:172.28.204.62:3306::ffff:172.28.204.62:363601.2.3.4.5.6.
现在显示3306,而非mysql,因为禁用了主机名和端口的所有名称解析。另外你还可以查看/etc/services得到所有服务对应的端口列表。
5.解析数字地址/端口
用-r选项可以解析IP地址和端口号。用此方法可以列出172.28.204.62服务器的主机名。
[root@renwolecom~]#ss-rNetidStateRecv-QSend-QLocalAddress:PortPeerAddress:PorttcpESTAB00renwolecom:mysqlrenwolecom:481341.2.
6.IPv4套接字
我们可以通过-4选项只显示与IPv4套接字对应的信息。在下面的例子中,我们还使用-l选项列出了在IPv4地址上监听的所有内容。
[root@renwolecom~]#ss-l4NetidStateRecv-QSend-QLocalAddress:PortPeerAddress:PorttcpLISTEN0128*:http*:*tcpLISTEN0100127.0.0.1:smtp*:*tcpLISTEN0128*:entexthigh*:*tcpLISTEN0128172.28.204.62:zabbix-trapper*:*tcpLISTEN0128127.0.0.1:cslistener*:*1.2.3.4.5.6.7.
7.IPv6套接字
同样,我们可以使用-6选项只显示与IPv6套接字相关信息。在下面的例子中,我们还使用-l选项列出了在IPv6地址上监听的所有内容。
[root@renwolecom~]#ss-l6NetidStateRecv-QSend-QLocalAddress:PortPeerAddress:PortudpUNCONN00:::ipv6-icmp:::*udpUNCONN00:::ipv6-icmp:::*udpUNCONN00:::21581:::*tcpLISTEN080:::mysql:::*tcpLISTEN0100::1:smtp:::*tcpLISTEN0128:::entexthigh:::*1.2.3.4.5.6.7.8.
8.只显示TCP
-t选项只显示TCP套接字。当与-l结合只打印出监听套接字时,我们可以看到所有在TCP上侦听的内容。
[root@renwolecom~]#ss-ltStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128*:http*:*LISTEN0100127.0.0.1:smtp*:*LISTEN0128*:entexthigh*:*LISTEN0128172.28.204.62:zabbix-trapper*:*LISTEN0128127.0.0.1:cslistener*:*LISTEN080:::mysql:::*LISTEN0100::1:smtp:::*LISTEN0128:::entexthigh:::*1.2.3.4.5.6.7.8.9.10.
9.显示UDP
-u选项可用于仅显示UDP套接字。由于UDP是一种无连接的协议,因此只运行-u选项将不显示输出,我们可以将它与-a或-l选项结合使用,来查看所有侦听UDP套接字,如下所示:
[root@renwolecom~]#ss-ulStateRecv-QSend-QLocalAddress:PortPeerAddress:PortUNCONN00*:sunwebadmins*:*UNCONN00*:etlservicemgr*:*UNCONN00*:dynamid*:*UNCONN00*:9003*:*UNCONN00*:9004*:*UNCONN00127.0.0.1:terabase*:*UNCONN00*:56803*:*1.2.3.4.5.6.7.8.9.
10. Unix套接字
-x选项只能用来显示unix域套接字。
[root@renwolecom~]#ss-xNetidStateRecv-QSend-QLocalAddress:PortPeerAddress:Portu_strESTAB00/tmp/zabbix_server_preprocessing.sock23555*21093u_strESTAB00/tmp/zabbix_server_ipmi.sock20155*19009u_strESTAB00/tmp/zabbix_server_preprocessing.sock19354*22573u_strESTAB00/tmp/zabbix_server_preprocessing.sock21844*19375...1.2.3.4.5.6.7.
11.显示所有信息
-a选项显示所有的监听和非监听套接字,在TCP的情况下,这意味着已建立的连接。这个选项与其他的组合很有用,例如可以添加-a选项显示所有的UDP套接字,默认情况下只有-u选项我们看不到多少信息。
[root@renwolecom~]#ss-uRecv-QSend-QLocalAddress:PortPeerAddress:Port00172.28.204.66:363718.8.8.8:domain1.2.3.[root@renwolecom~]#ss-uaStateRecv-QSend-QLocalAddress:PortPeerAddress:PortUNCONN00*:sunwebadmins*:*UNCONN00*:etlservicemgr*:*UNCONN00*:dynamid*:*UNCONN00*:9003*:*UNCONN00*:9004*:*UNCONN00127.0.0.1:terabase*:*UNCONN00*:56803*:*ESTAB00172.28.204.66:363718.8.8.8:domain1.2.3.4.5.6.7.8.9.10.
12.显示套接字内存使用情况
-m选项可用于显示每个套接字使用的内存量。
[root@renwolecom~]#ss-ltmStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128*:http*:*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)LISTEN0100127.0.0.1:smtp*:*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)LISTEN0128*:entexthigh*:*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)LISTEN0128172.28.204.62:zabbix-trapper*:*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)LISTEN0128127.0.0.1:cslistener*:*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)LISTEN080:::mysql:::*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)LISTEN0100::1:smtp:::*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)LISTEN0128:::entexthigh:::*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)1.2.3.4.5.6.7.8.9.10.
13.显示TCP内部信息
我们可以使用-i选项请求额外的内部TCP信息。
[root@renwolecom~]#ss-ltiStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128*:chimera-hwm*:*bbrcwnd:10LISTEN0128*:etlservicemgr*:*bbrcwnd:10LISTEN0128172.28.204.66:27017*:*bbrcwnd:10LISTEN0128127.0.0.1:27017*:*bbrcwnd:10LISTEN0128*:dynamid*:*bbrcwnd:10LISTEN0128*:9003*:*bbrcwnd:10LISTEN0128*:9004*:*bbrcwnd:10LISTEN0128*:http*:*bbrcwnd:10LISTEN0128*:ssh*:*bbrcwnd:10LISTEN0100127.0.0.1:smtp*:*bbrcwnd:10LISTEN0128*:sunwebadmins*:*bbrcwnd:10LISTEN0128:::ssh:::*bbrcwnd:101.2.3.4.5.6.7.8.9.10.11.12.13.14.
在每个侦听套接字下面,我们可以看到更多信息。注意:-i选项不适用于UDP,如果您指定-u,而非-t,则不会显示这些额外的信息。
14.显示统计信息
我们可以使用-s选项快速查看统计数据。
[root@renwolecom~]#ss-sTotal:798(kernel1122)TCP:192(estab99,closed81,orphaned0,synrecv0,timewait1/0),ports0TransportTotalIPIPv6*1122--RAW101UDP000TCP1115952INET1125953FRAG0001.2.3.4.5.6.7.8.9.10.11.
这使我们能够快速看到已建立连接的总数,及各种类型的套接字的计数和IPv4或IPv6的使用情况。
15.基于状态的过滤器
我们可以指定一个套接字的状态,只打印这个状态下的套接字。例如,我们可以指定包括已建立, established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, closed-wait, last-ack监听和关闭等状态。以下示例显示了所有建立的TCP连接。为了生成这个,我通过SSH连接到了服务器,并从Apache加载了一个网页。然后我们可以看到与Apache的连接迅速转变为等待时间。
[root@renwolecom~]#ss-tstateestablishedRecv-QSend-QLocalAddress:PortPeerAddress:Port052172.28.204.67:ssh123.125.71.38:4951800::ffff:172.28.204.67:http::ffff:123.125.71.38:492371.2.3.4.[root@renwolecom~]#ss-tstateestablishedRecv-QSend-QLocalAddress:PortPeerAddress:Port00172.28.204.67:ssh103.240.143.126:55682052172.28.204.67:ssh123.125.71.38:4951800::ffff:172.28.204.67:http::ffff:123.125.71.38:492621.2.3.4.5.
16.根据端口号进行过滤
可以通过过滤还可以列出小于(lt),大于(gt),等于(eq),不等于(ne),小于或等于(le),或大于或等于(ge)的所有端口。
例如,以下命令显示端口号为500或以下的所有侦听端口:
[root@renwolecom~]#ss-ltnsportle500StateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128*:80*:*LISTEN0100127.0.0.1:25*:*LISTEN0100::1:25:::*1.2.3.4.5.
为了进行比较,我们可以执行相反的操作,并查看大于500的所有端口:
[root@renwolecom~]#ss-ltnsportgt500StateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128*:12002*:*LISTEN0128172.28.204.62:10051*:*LISTEN0128127.0.0.1:9000*:*LISTEN080:::3306:::*LISTEN0128:::12002:::*1.2.3.4.5.6.7.
我们还可以根据源或目标端口等项进行筛选,例如,我们搜索具有SSH源端口运行的TCP套接字:
[root@renwolecom~]#ss-t'(sport=:ssh)'StateRecv-QSend-QLocalAddress:PortPeerAddress:PortESTAB00172.28.204.66:ssh123.125.71.38:501401.2.3.
17.显示SELinux上下文
-Z`与`-z`选项可用于显示套接字的SELinux安全上下文。在下面的例子中,我们使用`-t`和-l`选项来列出侦听的TCP套接字,使用-Z选项我们也可以看到SELinux的上下文。[root@renwolecom~]#ss-tlZStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128*:sunrpc*:*users:(("systemd",pid=1,proc_ctx=system_u:system_r:init_t:s0,fd=71))LISTEN05172.28.204.62:domain*:*users:(("dnsmasq",pid=1810,proc_ctx=system_u:system_r:dnsmasq_t:s0-s0:c0.c1023,fd=6))LISTEN0128*:ssh*:*users:(("sshd",pid=1173,proc_ctx=system_u:system_r:sshd_t:s0-s0:c0.c1023,fd=3))LISTEN0128127.0.0.1:ipp*:*users:(("cupsd",pid=1145,proc_ctx=system_u:system_r:cupsd_t:s0-s0:c0.c1023,fd=12))LISTEN0100127.0.0.1:smtp*:*users:(("master",pid=1752,proc_ctx=system_u:system_r:postfix_master_t:s0,fd=13))1.2.3.4.5.6.7.8.9.10.11.12.
18.显示版本号
-v选项可用于显示ss命令的特定版本信息,在这种情况下,我们可以看到提供ss的iproute包的版本。
[root@renwolecom~]#ss-vssutility,iproute2-ss1307161.2.
19.显示帮助文档信息
-h选项可用于显示有关ss命令的进一步的帮助,如果需要对最常用的一些选项进行简短说明,则可以将其用作快速参考。 请注意:这里并未输入完整列表。
[root@renwolecom~]#ss-hUsage:ss[OPTIONS]1.2.
20.显示扩展信息
我们可以使用-e选项来显示扩展的详细信息,如下所示,我们可以看到附加到每条行尾的扩展信息。
[root@renwolecom~]#ss-lteStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128*:sunrpc*:*ino:16090sk:ffff880000100000LISTEN05172.28.204.62:domain*:*ino:23750sk:ffff880073e70f80LISTEN0128*:ssh*:*ino:22789sk:ffff880073e70000LISTEN0128127.0.0.1:ipp*:*ino:23091sk:ffff880073e707c0LISTEN0100127.0.0.1:smtp*:*ino:24659sk:ffff880000100f801.2.3.4.5.6.7.
21.显示计时器信息
-o选项可用于显示计时器信息。该信息向我们展示了诸如重新传输计时器值、已经发生的重新传输的数量以及已发送的keepalive探测的数量。
[root@renwolecom~]#ss-toStateRecv-QSend-QLocalAddress:PortPeerAddress:PortESTAB052172.28.204.67:ssh123.125.71.38:49518timer:(on,406ms,0)LAST-ACK01172.28.204.67:ssh103.240.143.126:49603timer:(on,246ms,0)
感谢各位的阅读,以上就是“Linux的ss命令如何使用”的内容了,经过本文的学习后,相信大家对Linux的ss命令如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是恰卡编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
推荐阅读
-
linux Centos如何安装PHP7
linuxCentos如何安装PHP7今天小编给大家分享一下li...
-
干了10多年的php,还不会安装,是不是丢人
-
Linux编程的十大代码编辑器新鲜出炉,你用的入榜单了吗?
-
从7到8,CentOS又更新了什么
-
PHP程序员的技术成长规划-基础阶段篇
-
Linux curl命令
Linuxcurl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但...
-
CentOS和RedHat下8个最常用的YUM库
-
Linux系列之CentOS+Nginx+PHP+MySQL
-
3分钟短文:Laravel写个命令行,你就是下一个Geek
-
是时候深入了解Linux的系统结构了
什么是Linux?如果你以前从未接触过Linux,可能就不清楚为什么会有这么多不同的Linux发行版。在查看Linux...