1. 程式人生 > >netstat命令怎麼檢視埠是否佔用

netstat命令怎麼檢視埠是否佔用

轉自:http://www.ahlinux.com/start/cmd/527.html

netstat命令是一個監控TCP IP網路的非常有用的工具,它可以顯示路由表、實際的網路連線以及每一個網路介面裝置的狀態資訊,這裡我只用到其
netstat命令是一個監控TCP/IP網路的非常有用的工具,它可以顯示路由表、實際的網路連線以及每一個網路介面裝置的狀態資訊,這裡我只用到其中的部分功能.
netstat 的常用引數: - t、- u、- w和- x分別表示TCP、UDP、RAW和UNIX套接字連線。-a標記,還會顯示出等待連線(也就是說處於監聽模式)的套接字。
-l 顯示正在被監聽(listen)的埠, -n表示直接顯示埠數字而不是通過察看/etc/service來轉換為埠名,-p選項表示列出監聽的程式。


有關netstat命令的詳細用法,可以參考:


windows 埠被佔用問題 netstat命令檢視端口占用 Linux下netstat命令例項 linux命令例項教程之netstat命令 Linux netstat命令用法詳解 netstat與awk命令統計網路連線數的方法 netstat 檢視電腦開啟的埠 使用netstat找到佔用埠的程序
1)程式碼示例:
netstat -tl
檢視當前tcp監聽埠
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
檢視當前tcp監聽埠,需要顯示監聽的程式名,當不清楚mysql的監聽埠時比較好用。
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的監聽埠,當前啟動的mysql埠為34006,明確知道mysql監聽埠時使用。


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
由於資料庫和運用程式都放在同一臺機器了,因此這裡連線被顯示了兩次。
可以使用-p引數來顯示PID,然後grep PID。


5)程式碼示例:
netstat -tap | grep 34006 | grep 23425
23425是當前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 
開啟終端,執行如下命令,檢視各程序佔用埠情況:

程式碼示例:
# ps -ef|wc -l    //檢視後臺執行的程序總數
# ps -fu csvn    //檢視csvn程序

# netstat -lntp  //檢視開啟了哪些埠
# netstat -r      //本選項可以顯示關於路由表的資訊
# netstat -a     //本選項顯示一個所有的有效連線資訊列表
# netstat -an|grep 8080
# netstat -na|grep -i listen //可以看到目前系統偵聽的埠號
# netstat -antup    //檢視已建立的連線程序,所佔用的埠。
netstat -anp|grep  1487
lsof -i:1487


檢視哪些程序打開了指定埠1487

關閉埠實際上是關閉其對應的服務,比如80埠是HTTPD  關閉80埠可以通過關閉httpd服務來實現
每個埠都有一個守護程序,kill掉這個守護程序就可以了
WINDOWS下用法:
目標:在Windows環境下,用netstat命令檢視某個埠號是否佔用,為哪個程序所佔用.
操作:操作分為兩步:(1)檢視該埠被那個PID所佔用;方法一:有針對性的檢視埠,使用命令
Netstat –ano|findstr “<埠號>”,如圖,最後一列為PID。圖中的埠號為1068,所對應的PID為3840。