在計(jì)算中,netstat(網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)據(jù))是一個(gè)命令行工具,它顯示傳輸控制協(xié)議的網(wǎng)絡(luò)連接(傳入和傳出),路由表,和一個(gè)數(shù)字網(wǎng)絡(luò)接口 (網(wǎng)絡(luò)接口控制器或者軟件定義的網(wǎng)絡(luò)接口)和網(wǎng)絡(luò)協(xié)議的統(tǒng)計(jì)數(shù)據(jù)。它可在類Unix操作系統(tǒng),包括OS X,Linux,Solaris和BSD,并提供對(duì)基于Windows NT的操作系統(tǒng),包括Windows XP,Windows Vista中,Windows 7和Windows8。
本文主要介紹netstat在Linux的使用
netstat man的幫助手冊(cè)會(huì)有提示信息:
NOTE
This program is obsolete. Replacement for netstat is ss. Replacement for netstat -r is ip route.
Replacement for netstat -i is ip -s link. Replacement for netstat -g is ip maddr.
在Linux系統(tǒng)作,netstat命令已廢棄不建議使用,已經(jīng)被ss命令替代,netstat已經(jīng)是明日黃花了,官方已經(jīng)不再更新了。它已經(jīng)被ss命令和ip命令所取代,或許在不久的將來在Linux發(fā)行版中就將見不到netstat的身影了。所以,如果還有人在用netstat,你要建議他使用ss和ip。
netstat命令是一個(gè)監(jiān)控TCP/IP網(wǎng)絡(luò)的非常有用的工具,它可以顯示路由表、實(shí)際的網(wǎng)絡(luò)連接以及每一個(gè)網(wǎng)絡(luò)接口設(shè)備的狀態(tài)信息,
語(yǔ) 法:netstat [-acCeFghilMnNoprstuvVwx][-A網(wǎng)絡(luò)類型>][--ip]
補(bǔ)充說明:利用netstat指令可讓你得知整個(gè)Linux系統(tǒng)的網(wǎng)絡(luò)情況。
參 數(shù):
-a或--all 顯示所有連線中的Socket。
-A網(wǎng)絡(luò)類型>或--網(wǎng)絡(luò)類型> 列出該網(wǎng)絡(luò)類型連線中的相關(guān)地址。
-c或--continuous 持續(xù)列出網(wǎng)絡(luò)狀態(tài)。
-C或--cache 顯示路由器配置的快取信息。
-e或--extend 顯示網(wǎng)絡(luò)其他相關(guān)信息。
-F或--fib 顯示FIB。
-g或--groups 顯示多重廣播功能群組組員名單。
-h或--help 在線幫助。
-i或--interfaces 顯示網(wǎng)絡(luò)界面信息表單。
-l或--listening 顯示監(jiān)控中的服務(wù)器的Socket。
-M或--masquerade 顯示偽裝的網(wǎng)絡(luò)連線。
-n或--numeric 直接使用IP地址,而不通過域名服務(wù)器。
-N或--netlink或--symbolic 顯示網(wǎng)絡(luò)硬件外圍設(shè)備的符號(hào)連接名稱。
-o或--timers 顯示計(jì)時(shí)器。
-p或--programs 顯示正在使用Socket的程序識(shí)別碼和程序名稱。
-r或--route 顯示Routing Table。
-s或--statistice 顯示網(wǎng)絡(luò)工作信息統(tǒng)計(jì)表。
-t或--tcp 顯示TCP傳輸協(xié)議的連線狀況。
-u或--udp 顯示UDP傳輸協(xié)議的連線狀況。
-v或--verbose 顯示指令執(zhí)行過程。
-V或--version 顯示版本信息。
-w或--raw 顯示RAW傳輸協(xié)議的連線狀況。
-x或--unix 此參數(shù)的效果和指定"-A unix"參數(shù)相同。
--ip或--inet 此參數(shù)的效果和指定"-A inet"參數(shù)相同。
1)
代碼如下:
netstat -tl -nltp
查看當(dāng)前tcp監(jiān)聽端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:rrac *:* LISTEN
tcp 0 0 *:34006 *:* LISTEN
......
2)
代碼如下:
netstat -tlp
查看當(dāng)前tcp監(jiān)聽端口, 需要顯示監(jiān)聽的程序名,當(dāng)不清楚mysql的監(jiān)聽端口時(shí)比較好用
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:rrac *:* LISTEN -
tcp 0 0 *:34006 *:* LISTEN 23425/mysqld
......
3)
代碼如下:
netstat -tl | grep 34006
只查看mysql的監(jiān)聽端口,當(dāng)前啟動(dòng)的mysql端口為34006,明確知道m(xù)ysql監(jiān)聽端口時(shí)使用
4)
代碼如下:
netstat -ta | grep 34006
tcp 0 0 *:34006 *:* LISTEN
tcp 0 0 linux.local:34006 linux.local:41485 ESTABLISHED
tcp 0 0 linux.local:34006 linux.local:41486 ESTABLISHED
...
tcp 0 0 10.3.2.35:41488 10.3.2.35:34006 ESTABLISHED
tcp 0 0 10.3.2.35:41489 10.3.2.35:34006 ESTABLISHED
tcp 0 0 10.3.2.35:41490 10.3.2.35:34006 ESTABLISHED
由于數(shù)據(jù)庫(kù)和運(yùn)用程序都放在同一臺(tái)機(jī)器了,因此這里連接被顯示了兩次. 可以使用-p參數(shù)來顯示PID,然后grep PID.
5)
代碼如下:
netstat -tap | grep 34006 | grep 23425
23425是當(dāng)前mysql的PID
tcp 0 0 *:34006 *:* LISTEN 23425/mysqld
tcp 0 0 linux.local:34006 linux.local:41510 ESTABLISHED 23425/mysqld
tcp 0 0 linux.local:34006 linux.local:41511 ESTABLISHED 23425/mysqld
tcp 0 0 linux.local:34006 linux.local:41516 ESTABLISHED 23425/mysqld 從 整體上看,netstat的輸出結(jié)果可以分為兩個(gè)部分,一個(gè)是Active Internet connections,稱為有源TCP連接,另一個(gè)是Active UNIX domain sockets,稱為有源Unix域套接口。在上面的輸出結(jié)果中,第一部分有5個(gè)輸出結(jié)果,顯示有源TCP連接的情況,而第二部分的輸出結(jié)果顯示的是 Unix域套接口的連接情況。Proto顯示連接使用的協(xié)議;RefCnt表示連接到本套接口上的進(jìn)程號(hào);Types顯示套接口的類型;State顯示套 接口當(dāng)前的狀態(tài);Path表示連接到套接口的其它進(jìn)程使用的路徑名。
事實(shí)上,netstat是若干個(gè)工具的匯總。
顯示路由表
在隨- r標(biāo)記一起調(diào)用n e t s t a t時(shí),將顯示內(nèi)核路由表,就像我們利用r o u t e命令一樣。產(chǎn)生的輸出如下:
代碼如下:
[root@machine1 /]$ netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
210.34.6.0 0.0.0.0 255.255.255.128 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 210.34.6.2 0.0.0.0 UG 0 0 0 eth0