netstat命令的功能是顯示網路連接、路由表和網路介面的資訊,可以讓使用者得知有哪些網路連接正在運作。在日常工作中,我們最常用的也就兩個參數,即netstat –an,如下所示:
[root@tiaobanji ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:50020 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:41224 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:21224 0.0.0.0:* LISTEN
netstat -an參數中stat狀態)的含義如下:
LISTEN:偵聽來自遠方的TCP連接埠的串連請求;
SYN-SENT:在發送串連請求後等待匹配的串連請求;
SYN-RECEIVED:在收到和發送一個串連請求後等待對方對串連請求的確認;
ESTABLISHED:代表一個開啟的串連,我們常用此作為並發串連數;
FIN-WAIT-1:等待遠程TCP串連插斷要求,或先前的串連插斷要求的確認;
FIN-WAIT-2:從遠程TCP等待串連插斷要求;
CLOSE-WAIT:等待從本機使用者發來的串連插斷要求;
CLOSING:等待遠程TCP對串連中斷的確認;
LAST-ACK:等待原來發向遠程TCP的串連中斷的確認;
TIME-WAIT:等待足夠的時間以確保遠程TCP串連收到插斷要求的確認;
CLOSED:沒有任何串連狀態;
在日常工作中,我們可以用shell組合命令來查看伺服器的TCP串連狀態並匯總,命令如下:
netstat -an|awk '/^tcp/{++S[$NF]}END{for (a in S)print a,S[a]}'
參數說明:
CLOSED:沒有串連活動或進行中的;
LISTEN:伺服器正在等待的進入呼叫;
SYN_RECV:一個串連請求已經到達,等待確認;
SYN_SENT:應用已經開始,開啟一個串連;
ESTABLISHED:正常資料轉送狀態,也可以近似的理解為當前伺服器的並發數;
FIN_WAIT1:應用已經完成;
FIN_WAIT2:另一邊同意釋放;
ITMED_WAIT:等待所有分組死掉;
CLOSING:兩邊同時嘗試關閉;
TIME_WAIT:另一邊已初始化一個釋放;
LAST_ACK:等待所有分組死掉;
統計 TCP串連數 命令:
netstat -an |grep 'ESTABLISHED' |grep 'tcp' |wc -l
本文出自 “螞蟻窩” 部落格,請務必保留此出處http://feihan21.blog.51cto.com/1364153/1299973