1 說明
linux經常會查詢端口是否被占用,被哪些程式占用。
這裡使用netstat指令檢視centos系統的端口占用情況。
2 步驟
(1)檢視全部端口占用情況
執行指令:
netstat -tulpn
結果如下:
[[email protected] zhang]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::3306 :::* LISTEN 10818/mysqld
udp 0 0 127.0.0.1:323 0.0.0.0:* 1596/chronyd
可以看到:
3306端口:被tcp協定的PID為10818的mysqld所占用,State為LISTEN表示正在被監聽。
1596端口:被udp協定的PID為1596的chronyd所占用,State為空(state為目前連接配接狀态,udp協定無連接配接狀态)。
(2)查詢指定端口的占用情況
如查詢3306端口的占用情況,可看到如下記錄為
[[email protected] zhang]# netstat -tulpn |grep 3306
tcp6 0 0 :::3306 :::* LISTEN 10818/mysqld
(3)查詢占用端口的程式
可通過上述查詢結果的PID查詢占用程式的詳細情況:
如查詢占用3306端口的程式PID為10818,檢視程式詳情如下:
[[email protected] zhang]# ps -ef | grep 10818
mysql 10818 1 0 Feb23 ? 01:47:50 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
3 參數說明
常用參數說明如下:
-t:顯示TCP協定端口
-u:顯示UDP協定端口
-l:--listening,隻顯示正在偵聽的套接字(這是預設的選項)
-p: --program,顯示套接字所屬程序的PID和名稱。
-n:--numeric,顯示數字形式位址而不是去解析主機、端口或使用者名。
檢視所有指令詳細用法:
man netstat
4 套接字狀态說明
State:套接字的狀态。因為在RAW協定中沒有狀态,而且UDP也不用狀态資訊,是以此行留白。通常它為以下幾個值之一:
ESTABLISHED:套接字有一個有效連接配接。
SYN_SENT:套接字嘗試建立一個連接配接。
SYN_RECV:從網絡上收到一個連接配接請求。
FIN_WAIT1:套接字已關閉,連接配接正在斷開。
FIN_WAIT2:連接配接已關閉,套接字等待遠端方中止。
TIME_WAIT:在關閉之後,套接字等待處理仍然在網絡中的分組
CLOSED:套接字未用。
CLOSE_WAIT:遠端方已關閉,等待套接字關閉。
LAST_ACK:遠端方中止,套接字已關閉。等待确認。
LISTEN:套接字監聽進來的連接配接。如果不設定 --listening (-l) 或者 --all (-a) 選項,将不顯示出來這些連接配接。
CLOSING:套接字都已關閉,而還未把所有資料發出。
UNKNOWN:套接字狀态未知。