Linux netstat命令詳解


一、netstat命令介紹

  Netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerade 連接,多播成員 (Multicast Memberships) 等等。輸入netstat命令之后,會出現如下內容:

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE
 
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 1 [ ] STREAM CONNECTED 16178 @000000dd
unix 1 [ ] STREAM CONNECTED 16176 @000000dc
unix 9 [ ] DGRAM 5292 /dev/log
unix 1 [ ] STREAM CONNECTED 16182 @000000df
......

  從整體上看,netstat命令的輸出結果可以分為兩個部分:一個是Active Internet connections,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指的是接收隊列和發送隊列。這些數字一般都應該是0,如果不是0則表示軟件包正在隊列中堆積,這種情況只會在非常少的情況見到。另一個是Active UNIX domain sockets,稱為有源Unix域套接口(和網絡套接字一樣,但是只能用於本機通信,性能可以提高一倍)。Proto表示連接使用的協議,RefCnt表示連接到該套接口上的進程號,Type表示套接口的類型,State表示套接口當前的狀態,Path表示連接到套接口的其它進程使用的路徑名。

二、netstat常用參數

  netstat命令常用的選項參數如下表所示:

選項 功能
-a (all)顯示所有選項,默認不顯示LISTEN相關
-t (tcp)僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名(不進行DNS解析),能顯示IP的全部轉化成IP
-l 僅列出有在 Listen (監聽) 的服務狀態
-p 顯示進程標識符和進程名稱
-r 顯示路由信息,路由表
-e 顯示擴展信息,例如uid等
-s 按各個協議進行統計

提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到

三、netstat命令使用實例

【例1】列出所有端口(包括正在監聽和未監聽的)

[root@Gin scripts]# netstat -a | less -N
      1 Active Internet connections (servers and established)
      2 Proto Recv-Q Send-Q Local Address           Foreign Address         State
      3 tcp        0      0 0.0.0.0:8223            0.0.0.0:*               LISTEN
      4 tcp        0      0 0.0.0.0:29503           0.0.0.0:*               LISTEN
      5 tcp        0      0 localhost:1988          0.0.0.0:*               LISTEN
      6 tcp        0      0 n227-080-096.byted:8648 0.0.0.0:*               LISTEN
      7 tcp        0      0 n227-080-096.byted:8649 0.0.0.0:*               LISTEN
      8 tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN
      9 tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
     10 tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
     11 tcp        0      1 n227-080-096.byte:42246 n12-058-225.byted.:3379 SYN_SENT
     12 tcp        0      0 n227-080-096.byte:18484 n227-080-096.byted:2280 TIME_WAIT
     13 tcp        0      0 n227-080-096.byte:18666 n227-080-096.byted:2280 TIME_WAIT
     14 tcp        0      0 n227-080-096.byte:14324 n8-006-208.byted.o:http ESTABLISHED
......

less命令可以分頁顯示,-N參數可以列出行號

【例2】列出所有TCP端口

[root@Gin scripts]# netstat -at | less
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State     
tcp        0      0 *:ssh                       *:*                         LISTEN     
tcp        0     96 Gin:ssh                     192.168.17.1:60480          ESTABLISHED
tcp        0      0 *:ssh                       *:*                         LISTEN     
tcp        0      0 *:mysql                     *:*                         LISTEN
......

如果需要列出所有UDP端口,則netstat -au

【例3】列出只在監聽的端口

[root@Gin scripts]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State     
tcp        0      0 *:ssh                       *:*                         LISTEN     
tcp        0      0 *:ssh                       *:*                         LISTEN     
tcp        0      0 *:mysql                     *:*                         LISTEN     
udp        0      0 *:bootpc                    *:*                                    
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     7132   @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     9569   /var/lib/mysql/mysql.sock
......

【例4】列出所有監聽TCP的端口

➜  test netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:8223            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:29503           0.0.0.0:*               LISTEN
tcp        0      0 localhost:1988          0.0.0.0:*               LISTEN
tcp        0      0 n227-080-096.byted:8648 0.0.0.0:*               LISTEN
tcp        0      0 n227-080-096.byted:8649 0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
......

如果需要列出所有監聽UDP的端口,則:netstat -lu

【例5】在netstat的輸出中顯示 PID 和進程名稱

  netstat -p 可以與其它開關一起使用,這樣可以添加 “PID/進程名稱” 到netstat的輸出中,這樣調試的時候可以很方便的發現特定端口運行的程序

# netstat -pt
 Active Internet connections (w/o servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
 tcp        1      0 ramesh-laptop.loc:47212 192.168.185.75:www        CLOSE_WAIT  2109/firefox
 tcp        0      0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox

例6】找出進程運行的端口

並不是所有的進程都能找到,沒有權限的會不顯示,使用 root 權限查看所有的信息。

# netstat -ap | grep ssh
 tcp        1      0 dev-db:ssh           101.174.100.22:39213        CLOSE_WAIT  -
 tcp        1      0 dev-db:ssh           101.174.100.22:57643        CLOSE_WAIT  -

例7】找出運行在指定端口的進程

➜  test netstat -an|grep 80
tcp        0      0 10.227.80.96:8648       0.0.0.0:*               LISTEN
tcp        0      0 10.227.80.96:8649       0.0.0.0:*               LISTEN
tcp        0      0 10.227.80.96:34832      10.225.117.231:9370     ESTABLISHED
tcp        0      0 10.227.80.96:35026      10.227.80.96:2280       TIME_WAIT
tcp        0      0 10.227.80.96:16850      10.174.231.72:9427      TIME_WAIT
tcp        0      0 127.0.0.1:30812         127.0.0.1:2280          ESTABLISHED
tcp        0      0 10.227.80.96:43922      10.225.144.63:9436      ESTABLISHED
tcp        0      0 10.227.80.96:100        10.154.16.17:4083       ESTABLISHED
tcp        0      0 10.227.80.96:35160      10.227.80.96:2280       TIME_WAIT
......

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM