netstat命令使用例項

weixin_34377065發表於2013-04-08

netstat命令用於顯示網路相關資訊,例如網路連線資訊,路由表資訊,埠占用情況等,下面介紹netstat的具體用法。

 

1.顯示所有連線資訊

-a 選項用於顯示全部連線資訊:

# netstat -a | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:sunrpc                *:*                     LISTEN                                     
udp        0      0 *:sunrpc                *:*                                 
                            
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     7697   private/error

注意這裡所說的“連線資訊”包括基於tcp/udp的連線,也包括 Unix domain socket 資訊,既包含已建立連線資訊,也包括監聽狀態的埠資訊。 -at 選項用於僅顯示tcp相關連線,-au 選項用於僅顯示udp相關連線。

 

2.顯示監聽狀態的埠

-l 選項用於顯示監聽(listening)狀態的埠:

# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:sunrpc                *:*                     LISTEN                                 
udp        0      0 *:qmqp                  *:*                                 
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     7697   private/error

同樣,增加 t或u 將僅針對 tcp或udp 顯示。

 

3.顯示連線相關程式名和pid

我們檢視某連線資訊或某埠狀態時,如果能檢視到建立該連線或佔用該埠的程式,這將非常有用,-p 選項完成該功能:

# netstat -pt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 bogon:ssh               bogon:49792             ESTABLISHED 4211/1 

 

4.檢視某特定埠被哪個程式佔用

檢視某埠是否被佔用,這是經常遇到的情形,可用以下方法查詢:

# netstat -an | grep ':22'
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      
tcp        0      0 192.168.1.101:22        192.168.1.100:49792     ESTABLISHED 
tcp        0      0 :::22  

反過來,我們也可以查詢某程式佔用了哪些埠:

# netstat -ap | grep ssh
tcp        0      0 *:ssh                   *:*                     LISTEN      2792/sshd           
tcp        0      0 bogon:ssh               bogon:49792             ESTABLISHED 4211/1              
tcp        0      0 *:ssh                   *:*                     LISTEN      2792/sshd  

 

5.不作域名和埠名解析

以上我們用到了 -n 選項,其指示資訊顯示時不作域名和埠名解析。在/etc/hosts等檔案中我們可以指定某ip對應某域名(如192.168.1.100對應bangerlee),若不使用 -n 選項,相應的連線條目將顯示 'bangerlee',而加了 -n 選項則顯示ip地址;對於周知埠,netstat預設顯示周知埠對應的服務,如22號埠為ssh,-n 選項指示netstat顯示埠號。

 

6.顯示路由表資訊

使用 -r 選項顯示路由表資訊,與route命令顯示結果類似:

# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
bogon           *               255.255.255.0   U         0 0          0 wlan0
loopback        *               255.0.0.0       U         0 0          0 lo
default         bogon           0.0.0.0         UG        0 0          0 wlan0

 

7.顯示網口資訊

netstat還是用於顯示網口資訊:

# 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        0      0      0      0        0      0      0      0 BMU
lo    16436   0        6      0      0      0        6      0      0      0 LRU
wlan0  1500   0    29250      0      0      0     3485      0      0      0 BMRU

netstat -ie 將資訊網口的詳細資訊,與ifconfig命令結果類似。

 

8.針對網路協議顯示統計資訊

-s 選項用於顯示各網路協議相關統計資訊:

# netstat -s
Ip:
    26700 total packets received
    3 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    10844 incoming packets delivered
    3392 requests sent out
Tcp:
    33 active connections openings
    1 passive connection openings
    3 failed connection attempts
    0 connection resets received
    1 connections established
    3171 segments received
    3153 segments send out
    7 segments retransmited
    0 bad segments received.
    3 resets sent
Udp:
    150 packets received
    107 packets to unknown port received.
……

 

Reference: UNIX/Linux: 10 Netstat Command Examples

相關文章