netstat查看端口命令詳解


nestat:打印網絡連接、路由表、接口統計信息、偽裝連接和多播成員,使用最多的是打印網絡連接信息

一、常見的參數

-a (all)顯示所有選項,默認不顯示LISTEN相關
-t (tcp)僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數字的全部轉化成數字。
-l 僅列出有在 Listen (監聽) 的服務狀態

-p 顯示建立相關鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴展信息,例如uid等
-s 按各個協議進行統計
-c 每隔一個固定時間,執行該netstat命令。

 

二、返回字段定義

[root@localhost app]# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2717/master
tcp        0      0 10.10.1.132:6379        0.0.0.0:*               LISTEN      9717/redis-server 1
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1874/nginx: master
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1291/sshd
tcp        0      0 10.10.1.132:6379        10.0.20.3:62257         ESTABLISHED 9717/redis-server 1
tcp        0      0 10.10.1.132:6379        10.10.1.113:51015       ESTABLISHED 9717/redis-server 1

Proto:代表協議(tcp、tcp6、udp、udp6)

Recv-Q:數據已經在本地接收緩沖,但是還沒有recv()

Send-Q:對方沒有收到的數據或者說沒有Ack的,還是本地緩沖區

Local Address: 本地IP:本地端口

Foreign Address: 遠程IP:遠程端口

State:鏈接狀態(監聽狀態:LISTEN、建立連接狀態:ESTABLISHED等)

PID:進程PID號

Program name:程序名字

 

三、常用的netstat命令:

1. 查詢進程號所占用的端口號: netstat -anp | grep 進程號

下圖中,可以看到監控狀態為LISTEN表示已經被占用,最后一列顯示被服務redis-server占用,查看具體端口號6379,只要有如圖這一行就表示被占用了。

!!此處注意,圖中如果顯示的是LISTENING並不表示端口被占用,不要和LISTEN混淆哦,查看具體端口時候,必須要看到tcp,端口號,LISTEN那一行,才表示端口被占用

[root@localhost app]# netstat -anp | grep 9717
tcp        0      0 10.10.1.132:6379        0.0.0.0:*               LISTEN      9717/redis-server 1
tcp        0      0 10.10.1.132:6379        10.0.20.3:62257         ESTABLISHED 9717/redis-server 1
tcp        0      0 10.10.1.132:6379        10.10.1.113:51015       ESTABLISHED 9717/redis-server 1
tcp        0      0 10.10.1.132:6379        10.0.20.3:62252         ESTABLISHED 9717/redis-server 1

 

 

 

2. 查看端口號對應的進程,用於排查端口號是否被占用:netstat -tunlp | grep 端口號

-l 表示查找的是監聽狀態的(listen)的進程,非監聽的不會被查詢出來

 

[root@localhost app]# netstat -tunlp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      10841/java

 

 

3. 查看端口號的使用情況:netstat -anp | grep 端口號

 

[root@localhost app]# netstat -anp |grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      10841/java
tcp6       0      0 127.0.0.1:8080          127.0.0.1:44093         ESTABLISHED 10841/java
tcp6       0      0 127.0.0.1:44093         127.0.0.1:8080          ESTABLISHED 11061/java

 

4. 顯示pid和進程:netstat -pt

[root@localhost ~]# netstat -pt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 10.10.1.132:6379        10.10.1.114:50267       ESTABLISHED 9717/redis-server 1
tcp        0      0 10.10.1.132:6379        10.0.20.3:60342         ESTABLISHED 9717/redis-server 1
tcp6       0      0 10.10.1.132:ddi-tcp-1   10.0.10.3:55131         ESTABLISHED 9147/java
tcp6       0      0 10.10.1.132:46743       192.168.99.113:mysql    ESTABLISHED 12349/java
tcp6       0      0 10.10.1.132:47033       10.10.1.132:6379        ESTABLISHED 10841/java
tcp6       0      0 10.10.1.132:us-srv      10.10.1.124:34405       FIN_WAIT2   -

 

5. 列出所有處於監聽狀態的 Sockets:

netstat -l        #只顯示監聽端口
netstat -lt       #只列出所有監聽 tcp 端口
netstat -lu       #只列出所有監聽 udp 端口
netstat -lx       #只列出所有監聽 UNIX 端口

 


免責聲明!

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



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