Linux系統(tǒng)中,ss命令可用于查看系統(tǒng)的socket的狀態(tài)。
創(chuàng)新互聯(lián)專業(yè)提供成都主機(jī)托管四川主機(jī)托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價(jià)格,機(jī)房位于中國(guó)電信/網(wǎng)通/移動(dòng)機(jī)房,雅安移動(dòng)機(jī)房服務(wù)有保障!
1、命令格式:
ss [參數(shù)]
ss [參數(shù)] [過濾]
2、命令功能:
ss(Socket Statistics的縮寫)命令可以用來(lái)獲取 socket統(tǒng)計(jì)信息,此命令輸出的結(jié)果類似于
netstat輸出的內(nèi)容,但它能顯示更多更詳細(xì)的 TCP連接狀態(tài)的信息,且比 netstat 更快速高效。它使用了 TCP協(xié)議棧中
tcp_diag(是一個(gè)用于分析統(tǒng)計(jì)的模塊),能直接從獲得第一手內(nèi)核信息,這就使得 ss命令快捷高效。在沒有
tcp_diag,ss也可以正常運(yùn)行。
3、命令參數(shù):
-h, --help 幫助信息
-V, --version 程序版本信息
-n, --numeric 不解析服務(wù)名稱
-r, --resolve 解析主機(jī)名
-a, --all 顯示所有套接字(sockets)
-l, --listening 顯示監(jiān)聽狀態(tài)的套接字(sockets)
-o, --options 顯示計(jì)時(shí)器信息
-e, --extended 顯示詳細(xì)的套接字(sockets)信息
-m, --memory 顯示套接字(socket)的內(nèi)存使用情況
-p, --processes 顯示使用套接字(socket)的進(jìn)程
-i, --info 顯示 TCP內(nèi)部信息
-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),F(xiàn)AMILY可選,支持 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)信息轉(zhuǎn)儲(chǔ)到文件
-F, --filter=FILE 從文件中都去過濾器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
4、使用實(shí)例:
ss 是 Socket Statistics 的縮寫。ss 命令可以用來(lái)獲取 socket 統(tǒng)計(jì)信息,它顯示的內(nèi)容和 netstat 類似。但 ss 的優(yōu)勢(shì)在于它能夠顯示更多更詳細(xì)的有關(guān) TCP 和連接狀態(tài)的信息,而且比 netstat 更快。當(dāng)服務(wù)器的 socket 連接數(shù)量變得非常大時(shí),無(wú)論是使用 netstat 命令還是直接 cat /proc/net/tcp,執(zhí)行速度都會(huì)很慢。ss 命令利用到了 TCP 協(xié)議棧中 tcp_diag。tcp_diag 是一個(gè)用于分析統(tǒng)計(jì)的模塊,可以獲得 Linux 內(nèi)核中第一手的信息,因此 ss 命令的性能會(huì)好很多?!禠inux就該這么學(xué)》有Linux命令大全
常用選項(xiàng)
-h, --help 幫助
-V, --version 顯示版本號(hào)
-t, --tcp 顯示 TCP 協(xié)議的 sockets
-u, --udp 顯示 UDP 協(xié)議的 sockets
-x, --unix 顯示 unix domain sockets,與 -f 選項(xiàng)相同
-n, --numeric 不解析服務(wù)的名稱,如 "22" 端口不會(huì)顯示成 "ssh"
-l, --listening 只顯示處于監(jiān)聽狀態(tài)的端口
-p, --processes 顯示監(jiān)聽端口的進(jìn)程(Ubuntu 上需要 sudo)
-a, --all 對(duì) TCP 協(xié)議來(lái)說,既包含監(jiān)聽的端口,也包含建立的連接
-r, --resolve 把 IP 解釋為域名,把端口號(hào)解釋為協(xié)議名稱
常見用例
如果不添加選項(xiàng) ss 命令默認(rèn)輸出所有建立的連接(不包含監(jiān)聽的端口),包括 tcp, udp, and unix socket 三種類型的連接:
查看主機(jī)監(jiān)聽的端口 $ ss -tnl
蠻少看見用-ntl參數(shù)的。
其實(shí)ISO系統(tǒng)中,sm命令TCP它的部分分別代表他們一個(gè)系統(tǒng)的指令和系統(tǒng)的一個(gè)編碼。
1、export PATH=$PATH:.
ss.sh
2、bash ss.sh
3、. ss.sh
4、${PWD}/ss.sh
5、exec ss.sh
6、把ss.sh放到PATH包含的路徑里,比如/bin等
ss命令,它是 socket statistic的縮寫,用于統(tǒng)計(jì)Linux系統(tǒng)中socket連接相關(guān)的信息,和其他的工具相比,ss命令可以顯示更多關(guān)于 TCP和狀態(tài)相關(guān)的信息
在Linux系統(tǒng)中,默認(rèn)已經(jīng)安裝了 ss 命令,下面介紹該命令常用的一些功能
netstat 命令和 ss 命令比較類似,主要功能也是統(tǒng)計(jì)系統(tǒng)中socket相關(guān)信息,和 netstat相比,ss 命令在跟蹤TCP連接和套接字方面速度更快,功能更強(qiáng)大,下面是 ss 和 netstat 統(tǒng)計(jì)速度的對(duì)比
從上面例子可以看出,ss 統(tǒng)計(jì)439條socket信息花費(fèi)了0.014s, netstat 統(tǒng)計(jì)366條socket信息花費(fèi)了0.029s,ss 統(tǒng)計(jì)信息的速度更快,所以實(shí)際使用中一般都是用 ss 替代 netstat
列出當(dāng)前已經(jīng)連接、關(guān)閉、等待的TCP連接,當(dāng)系統(tǒng)中已經(jīng)存在大量的套接字連接的時(shí)候,通過查看套接字摘要信息可以快速了解系統(tǒng)中套接字的總體情況
當(dāng)不使用任何選項(xiàng)時(shí),ss將顯示已建立連接的處于非監(jiān)聽狀態(tài)的套接字列表,由于原始結(jié)果太長(zhǎng),下面的例子只截取了一部分
上面例子中列說明:
socket類型,在上面的例子中,有 TCP、u_str(unix流)等套接字
套接字處于什么狀態(tài),下面是TCP套接字的所有狀態(tài)及說明, 實(shí)際上就是TCP的三次握手和四次揮手的所有狀態(tài)
在 ESTAB 狀態(tài)下,表示內(nèi)核中還有多少字節(jié)的數(shù)據(jù)沒有被上層應(yīng)用讀取,如果這里數(shù)值很大,應(yīng)用程序可能發(fā)生了阻塞
在 ESTAB 狀態(tài)下,表示內(nèi)核發(fā)送隊(duì)列中還有多少字節(jié)的數(shù)據(jù)沒有收到確認(rèn)的ACK,如果這個(gè)數(shù)值很大,表明接收端的接收以及處理需要加強(qiáng)
本地地址和端口
遠(yuǎn)程地址和端口
使用 -l 選項(xiàng)可以列出所有處于偵聽(LISTEN)狀態(tài)的套接字
使用 -a 選項(xiàng)可以列出所有的狀態(tài)的套接字,由于所有的套接字列表太多,下面的例子中只列出了少許的數(shù)據(jù)
可以通過 TCP、UDP、Unix、Raw、IPV4、IPV6 這些協(xié)議類型顯示套接字,下面以常用的TCP/UDP/IPV4協(xié)議舉例說明
使用 -t 選項(xiàng)(TCP), 讓結(jié)果只列出TCP套接字
使用 -u 選項(xiàng)(UCP), 讓結(jié)果只列出UCP套接字
使用 -4 選項(xiàng)(IPV4), 讓結(jié)果只列出IPV4的套接字
有時(shí)我們查詢到指定的套接字了,但是無(wú)法知道套接字是哪個(gè)應(yīng)用程序在使用,這時(shí)可以使用 -p 選項(xiàng)
上面的例子中,從 Local Address:Port 列可以知道,這個(gè)套接字時(shí)mysql在使用,如果沒有加 -p 選項(xiàng)的話,這里顯示的時(shí)mysql的端口號(hào)3306
有時(shí)候我們啟動(dòng)應(yīng)用程序的時(shí)候,發(fā)現(xiàn)端口已經(jīng)被占用了,此時(shí)先要查找出占用目標(biāo)端口的應(yīng)用程序,然后關(guān)閉它,再啟動(dòng)我們自己的應(yīng)用程序
上面的例子中,sport 表示源,對(duì)應(yīng)的 dport 表示目標(biāo),命令查找端口3306是被哪個(gè)進(jìn)程使用了,最終發(fā)現(xiàn)3306是mysql在使用
通過端口篩選還支持小于、大于、小于等于、大于等于、不等于,具體的說明如下:
上面的例子中篩選出進(jìn)程名為 mysql 的套接字, 執(zhí)行的命令中 -n 選項(xiàng)是不解析服務(wù)名字,加了此選項(xiàng)就顯示成端口了,不會(huì)解析成服務(wù)名稱了
下面例子是篩選出目標(biāo)IP地址為27.38.240.99的套接字,dst 是目標(biāo)地址
下面例子是篩選出源IP地址為192.168.0.99的套接字,src 是源地址
首先,你要知道你當(dāng)前的目錄在哪兒,用pwd命令即可:
其次,你要復(fù)制文件會(huì)用到cp命令(copy的簡(jiǎn)寫)
相對(duì)路徑就是相對(duì)于當(dāng)前目錄的路徑,因?yàn)?2目錄是當(dāng)前目錄11的子目錄,所以用22/33/ss.txt就可以找到源文件,所以源碼如下
:
cp 源文件 目標(biāo)文件
如果當(dāng)前目錄為11,那么:
cp 22/33/ss.txt 22/ss.txt