Linux中的netstat命令詳解
阿新 • • 發佈:2019-01-03
前面我們學習了網路的有關基礎知識,今天我們來介紹一個Linux下面的關於網路的一個重要指令——netstat.
功能說明
netstat是基於Netstat這個命令列工具的指令,它可以用來查詢系統上的網路套接字連線情況,包括tcp,udp以及Unix套接字;另外它還能列出路由表,介面狀態和多播成員等資訊。
主要選項
關於netstat命令的選項有很多,這裡我們只介紹常見選項,關於選項和選項的作用如下圖:
例項演示
netstat -a
這條命令會列出所有的埠,包括監聽的和未監聽的。
netstat -t
列出所有的tcp協議的埠,結果如下:
[root@bogon Test2017_3_7]# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:1024 *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 localhost:smtp *:* LISTEN
tcp 0 0 localhost:40312 localhost:1024 ESTABLISHED
tcp 0 0 localhost:1024 localhost:40312 ESTABLISHED
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 localhost:smtp *:* LISTEN
netstat -ua
同樣,這條命令表示列出所有的UDP協議的埠。
找出程式執行的埠
netstat -ap | grep '程式名'
例如:
[root@bogon Test2017_3_7]# netstat -ap | grep './server'
tcp 0 0 localhost:1024 *:* LISTEN 6130/./server
tcp 0 0 localhost:1024 localhost:40312 ESTABLISHED 6130/./server
You have new mail in /var/spool/mail/lzh
找出埠的程式名
netstat -ap | grep '埠號'
例如:
[[email protected] Test2017_3_7]# netstat -ap | grep '1024'
tcp 0 0 localhost:1024 *:* LISTEN 6130/./server
tcp 0 0 localhost:40312 localhost:1024 ESTABLISHED 6323/./client
tcp 0 0 localhost:1024 localhost:40312 ESTABLISHED 6130/./server
禁止域名解析
這個主要netstat中的-n選項有關,我們先來看看不帶n時所輸出的結果。
[root@bogon Test2017_3_7]# netstat -ltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost:1024 *:* LISTEN 6130/./server
tcp 0 0 *:ssh *:* LISTEN 1800/sshd
tcp 0 0 localhost:ipp *:* LISTEN 1690/cupsd
tcp 0 0 localhost:smtp *:* LISTEN 1925/master
tcp 0 0 *:ssh *:* LISTEN 1800/sshd
tcp 0 0 localhost:ipp *:* LISTEN 1690/cupsd
tcp 0 0 localhost:smtp *:* LISTEN 1925/master
下面我們再來看看加上n 選項後的輸入結果。
[root@bogon Test2017_3_7]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:1024 0.0.0.0:* LISTEN 6130/./server
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1800/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1690/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1925/master
tcp 0 0 :::22 :::* LISTEN 1800/sshd
tcp 0 0 ::1:631 :::* LISTEN 1690/cupsd
tcp 0 0 ::1:25 :::* LISTEN 1925/master
我們發現在local address 即主機地址這一欄中,如果沒有帶n選項,會將套接字所對應的域名解析出來,如果加上n選項,那麼就不會顯示,即禁止域名解析的功能,這樣做有助於提高查詢速度,因為減少了對主機域名的查詢。
持續輸出netstat資訊
這個沒有什麼好說的,大家自己試一試指令即可。
netstat -c**
顯示路由表的資訊
netstat -r
這條指令相當於route指令,會輸出核心路由資訊。
[root@bogon Test2017_3_7]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.3.1 0.0.0.0 UG 0 0 0 eth0
顯示介面資訊
netstat -i
root@bogon Test2017_3_7]# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 5277 0 0 0 578 0 0 0 BMRU
lo 16436 0 820 0 0 0 820 0 0 0 LRU
分類統計各個協議的相關資訊
netstat -sa