netstat和lsof查看端口的區別


一、Netstate

netstat 命令是一個監控TCP/IP網絡的非常有用的工具,它可以顯示路由表、實際的網絡連接以及每一個網絡接口設備的狀態信息
netstat用來查看系統當前系統網絡狀態信息,包括端口,連接情況等,常用方式如下:
netstat -atunlp,各參數含義如下:
• -t : 指明顯示TCP端口
• -u : 指明顯示UDP端口
• -l : 僅顯示監聽套接字(LISTEN狀態的套接字)
• -p : 顯示進程標識符和程序名稱,每一個套接字/端口都屬於一個程序
• -n : 不進行DNS解析
• -a 顯示所有連接的端口

 

二、LSOF

lsof 是 linux 下的一個非常實用的系統級的監控、診斷工具,它的意思是 List Open Files,很容易你就記住了它是 “ls + of”的組合它可以用來列出被各種進程打開的文件信息,記住:linux 下 “一切皆文件”

lsof filename 顯示打開指定文件的所有進程 2

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 用以顯示符合條件的進程情況

 

三、常用命令

根據端口port查進程

netstat -nap | grep port

lsof  -i:port 

根據進程pid查端口

netstat -nap | grep pid
 
lsof -i | grep pid

 

四、區別

netstat在非root下不能識別所有的進程,而且不是自己擁有的進程信息不會展示,需要 root 賬號才能顯示所有信息
lsof在非root下執行lsof -i 無任何輸出
兩者在root下均能顯示所有進程

netstat 可以顯示PID、進程名,不能顯示進程所屬的用戶

~$ sudo netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1144/dnsmasq    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      661/cupsd       
tcp6       0      0 ::1:631                 :::*                    LISTEN      661/cupsd

 

lsof 可以顯示進程名、PID、用戶

# lsof -i :22
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
sshd    1409 root    3u  IPv6   5678       TCP *:ssh (LISTEN)

COMMAND:進程的名稱
PID:進程標識符
USER:進程所有者
FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等
TYPE:文件類型,如DIR、REG等
DEVICE:指定磁盤的名稱
SIZE:文件的大小
NODE:索引節點(文件在磁盤上的標識)
NAME:打開文件的確切名稱

 


免責聲明!

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



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