lsof是指“列出打開文件(lists openfiles)”。而有一點,在Unix中一切(包括網絡套接口)都是文件。
語法格式如下:
lsof [ -?abChlnNOPRtUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-e s ] [ +|-f [cfgGn] ] [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k ] [ -K k ] [ +|-L [l] ] [ +|-m m ] [ +|-M ] [ -o [o] ] [ -p s ] [ +|-r
[t[m<fmt>]] ] [ -s [p:s] ] [ -S [t] ] [ -T [t] ] [ -u s ] [ +|-w ] [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]
這個命令的參數非常多,接下來介紹幾個常用的參數配置方法:
1.-i參數 獲取符合條件的網絡連接
1)查詢IPV4或者IPV6的連接
獲取Ipv4的連接:lsof -i 4
2)查詢指定協議的網絡連接:協議有兩種tcp,udp
如查詢tcp連接:lsof -i tcp
3)查詢端口使用情況,語法是lsof -i :端口號
如查詢5000端口的使用情況:lsof -i :5000
4)查詢指定主機的連接情況:lsof -i @hostname
如查詢本機的連接情況:lsof -i @localhost
2.-s參數:列出連接的大小,-s參數,一般與-i參數同時出現
lsof -i -s [p:s]//獲取指定協議類型的狀態信息
如查詢tcp協議listen狀態的連接:lsof -i -sTCP:LISTEN
3.-u參數:獲取指定用戶打開的文件
如查詢ntp打開的文件:lsof -u ntp
4.-t參數,獲取進程編號
如查詢root打開的進程編號:lsof -t -u root
5.-c參數,查詢指定命令打開的文件
lsof -c dotnet
6. -p參數,查詢指定進程所打開的文件
如查詢14709所打開的文件:lsof -p 14709
7.顯示所有與目錄交互的進程