1. 程式人生 > 實用技巧 >lsof、netstat檢視端口占用

lsof、netstat檢視端口占用

lsof

lsof(list open files)是一個列出當前系統開啟檔案的工具。在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體

常用的引數列表:
lsof filename 顯示開啟指定檔案的所有程序 lsof -a 表示兩個引數都必須滿足時才顯示結果 lsof -c string 顯示COMMAND列中包含指定字元的程序所有開啟的檔案 lsof -u username 顯示所屬user程序開啟的檔案 lsof -g gid 顯示歸屬gid的程序情況 lsof +d /DIR/ 顯示目錄下被程序開啟的檔案 lsof +D /DIR/ 同上,但是會搜尋目錄下的所有目錄,時間相對較長 lsof -d FD 顯示指定檔案描述符的程序 lsof -n 不將IP轉換為hostname,預設是不加上-n引數 lsof -i 用以顯示符合條件的程序情況 lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 46 --> IPv4 or IPv6 protocol --> TCP or UDP hostname --> Internet host name hostaddr --> IPv4地址 service --> /etc/service中的 service name (可以不只一個) port --> 埠號 (可以不只一個) 來自

linux之netstat與lsof

使用

lsof -i:埠號,檢視某埠的佔用情況 比如檢視5005號埠使用情況,lsof -i:5005,如下圖

$ lsof -i:5005

輸出引數

COMMAND:程序的名稱 PID: 程序識別符號 USER:程序所有者 FD:檔案描述符 TYPE:檔案型別 DEVICE:指定磁碟的名稱 SIZE/OFF:檔案的大小 NODE:索引節點 NAME:開啟檔案的確切名稱

netstat

netstat是系統自帶的命令,用於顯示網路狀態 利用 netstat 指令可得知整個 Linux 系統的網路情況

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

-p 顯示建立相關連結的程式名 -r 顯示路由資訊,路由表 -e 顯示擴充套件資訊,例如uid等 -s 按各個協議進行統計 -c 每隔一個固定時間,執行該netstat命令。 來自 linux之netstat與lsof

使用

netstat -tunlp|grep 埠號 比如檢視5005號埠使用情況,netstat -tunlp|grep 5005,如下圖

netstat -tunlp|grep 5005

netstat -tunlp

輸出引數

輸出的引數包括: Proto:顯示連線使用的網路傳輸協議,主要為tcp和udp Recv-Q:網路接收佇列 Send-Q:網路傳送佇列 Local Address:本地連線地址

Foreign Address:和本地建立連線的地址
State:埠狀態,內部地址與外部地址的連線狀態,主要有監聽( LISTEN )和建立(ESTABLISED)
PID/Program name: 程序識別符號/程序名稱

總結

其實這兩個命令還是有不同之處的 lsof可以看到程序所有者、檔案型別等資訊,更為全面,命令也稍微簡單一些