前言
面試時候經常問到:
①linux中如何檢視某個端口是否被占用?
②如何根據端口号查詢該端口被哪個服務占用了?
③如何根據端口号檢視程序PID?
總結:主要搞清楚應用程式的端口号、應用程式的程序号、應用程式名三者之間的關系。
netstat查詢指定端口占用情況
1、使用 netstat -nultp 指令查詢本機所有端口占用情況:【查詢本機開啟的所有服務(一個端口代表開啟了一個服務)】
主要檢視tcp對應的【tcp端口】:address就是對應的端口;State狀态是LISTEN說明處于監聽狀态。
2、檢視8000端口的占用情況,可以加 grep 指令:
netstat -nap | grep 端口号
使用示例:
[root@admin]# netstat -nap | grep 8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 15821/python3
tcp 0 0 172.22.237.244:8000 74.120.14.43:33068 ESTABLISHED 15821/python3
于是可以看到8000處于 LISTEN 狀态的,就是python3應用,前面的15821是對應的程序PID号。
lsof 指令使用【根據端口号查詢PID程序号】
先yum安裝lsof:
yum -y install lsof
根據端口查詢PID:
lsof -i:端口号
看狀态是LISTEN 對應的PID程序号
ps 根據程序名稱查詢PID程序号以及程序指定資訊
根據程序名稱查詢PID:
ps -ef | grep 程序名稱
根據程序PID查詢對應的端口:
netstat -nap | grep 程序PID