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.显示所有与目录交互的进程