lsof全名list openedfiles,也就是列举系统中已经被打开的文件。我们都知道,linux环境中,任何事物都是文件,设备是文件,目录是文件,甚至sockets也是文件。所以,用好lsof命令,对日常的linux管理非常有帮助。以下的说明,大部分内容来自lsof的manual文档。我所做的只是在中文翻译的基础上,进行简单的分类说明,并列举最常用的参数。
51Testing软件测试网:}#T$pa$i KH一、输出说明
Ef+Ug4o0 lsof是linux最常用的命令之一,通常的输出格式为:
)P6R%b"M%x{5I0引用
by(j6_4WO V0COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
51Testing软件测试网X3e@8t@ p&k$jh2_8V常见包括如下几个字段:更多的可见manual。
9y%_Ne.dO'ZZ01、COMMAND
Qk9u9C4`u,U j0默认以9个字符长度显示的命令名称。可使用+c参数指定显示的宽度,若+c后跟的参数为零,则显示命令的全名
:ZI;l;Y&@;]:{T8i02、PID:进程的ID号
51Testing软件测试网0s*w C[*j)L TUq({3、PPID
W/UtX5u7i~0父进程的IP号,默认不显示,当使用-R参数可打开。
51Testing软件测试网p1G8Ek5R._ P4、PGID
9OW"kl;F"bw
z0进程组的ID编号,默认也不会显示,当使用-g参数时可打开。
51Testing软件测试网 c'W1J*a?u(m~/_G5、USER
Hp6\3i
Kh]2\)W0命令的执行UID或系统中登陆的用户名称。默认显示为用户名,当使用-l参数时,可显示UID。
51Testing软件测试网q$z:`7m
Y?a6、FD
51Testing软件测试网i-k4{YN ixXe是文件的File Descriptor number,或者如下的内容:
-Yl\ j$\$kZ4BK0(这里很难翻译对应的意思,保留英文)
51Testing软件测试网"Gv!h4m;H*\;@引用
51Testing软件测试网v+R
V+fb*^ s3Z/O&ncwd current working directory;
;Gu xCt9|G0Lnn library references (AIX);
51Testing软件测试网0r1c4w3w7X Pjld jail directory (FreeBSD);
xWZ7iH@0ltx shared library text (code and data);
i$ti^"PIUl?0Mxx hex memory-mapped type number xx.
y-Qjm3O$xIV$V0m86 DOS Merge mapped file;
Lvx%J|0mem memory-mapped file;
bwr
Y.]b0mmap memory-mapped device;
51Testing软件测试网c[m'P/x'vHbpd parent directory;
{+\`{$b FAi/|0rtd root directory;
}*N5QIsk!j,p(y;v0tr kernel trace file (OpenBSD);
51Testing软件测试网yb
G
N9A3\%|0Nitxt program text (code and data);
51Testing软件测试网_s;L"\&jv86 VP/ix mapped file;
51Testing软件测试网5\*zTX}L/y%G文件的File Descriptor number显示模式有:
@(JO iy%eQ4@?g0引用
51Testing软件测试网X$U:r8FI,m?N+VL.Tr for read access;
$nt#ISqtAn/eU.K[,s0w for write access;
51Testing软件测试网f?*?+c9h?-O)w'}Ju for read and write access;
)B6`+^ qr;l!N I0N for a Solaris NFS lock of unknown type;
51Testing软件测试网 Lr:l5k{,Rr for read lock on part of the file;
/QD(t ?4F;SL&L$N0R for a read lock on the entire file;
51Testing软件测试网-bF,o m#Bh0h!tw for a write lock on part of the file;
51Testing软件测试网u:TCr)D7w/AW for a write lock on the entire file;
{zd"gM
u};c0u for a read and write lock of any length;
9kD!Eyj5u!_0U for a lock of unknown type;
51Testing软件测试网[Da,Q$uBx for an SCO OpenServer Xenix lock on part of the file;
51Testing软件测试网 ?+N@ s\kDN|dX for an SCO OpenServer Xenix lock on the entire file;
51Testing软件测试网tp'OS7P'q9\ @space if there is no lock.
51Testing软件测试网6{(X ?v(i#f8p(HP7、TYPE
51Testing软件测试网W1|d(yhdM引用
51Testing软件测试网,c9V&~2e%NM8B5aIPv4 IPv4的包;
| ZYiy0IPv6 使用IPv6格式的包,即使地址是IPv4的,也会显示为IPv6,而映射到IPv6的地址;
6S'd&J!E5o#}KSn0DIR 目录
51Testing软件测试网;b8G3R!Hn2g+nf"mLINK 链接文件
51Testing软件测试网g1~4{r/U+V详情请看manual中更多的注释。
51Testing软件测试网:hIaiD8、DEVICE
51Testing软件测试网5]KV;YCa:N*a#xn使用character special、block special表示的设备号
vY+L TUn09、SIZE
51Testing软件测试网AlX,\;T文件的大小,如果不能用大小表示的,会留空。使用-s参数控制。
51Testing软件测试网.fz3}%Q-lF10、NODE
"kV%E7vQM3O0本地文件的node码,或者协议,如TCP等
}l.s"fN011、NAME
51Testing软件测试网;mq#|&Nk(bK{挂载点和文件的全路径(链接会被解析为实际路径),或者连接双方的地址和端口、状态等
-MO-J)Dq'a0二、参数
51Testing软件测试网2tO"TX+e7XS;Gg1、不带额外参数运行
51Testing软件测试网g.RhQ(L"glsof path/filename
n*x2j?:^qW_B;u0显示已打开该目录或文件的所有进程信息
xk_!l:^h0lsof `which httpd`
51Testing软件测试网e7i;xG/Z
]
@%T显示指定命令的信息
q8gpMI4t02、参见参数
y.}y\ _&W0-c w 显示以w开头命令的已打开文件的信息
51Testing软件测试网3kI5{W&@pu2@lsof -c sshd
R6G)MJ)a^5T|0-p PID 显示指定PID已打开文件的信息
51Testing软件测试网
`2f6E'~qUTSlsof -p 4401
51Testing软件测试网E8ix5w9p7f2q9sX+d dir 依照文件夹dir来搜寻,但不会打开子目录
51Testing软件测试网&XB,rB/OWsdNlsof +d /root
PN1VIkj)E0+D dir 打开dir文件夹以及其子目录搜寻
'upT"yg,q%U
N't0lsof +D /root/
51Testing软件测试网2efl#{8K.DZ-d s 以FD列的信息进行匹配,可使用3-10,表示范围,3,10表示某些值
_\6Od~4|
l0lsof -d 3-10
rO;Bz%O^jNJ0-u 显示某用户的已经打开的文件(或该用户执行程序已经打开的文件)
51Testing软件测试网UM,to:[7u5elsof -u root
51Testing软件测试网+p+X#V/\z0plsof -u 0
51Testing软件测试网z \&Z;a&kG?◎可配合正规表达式使用
(`6p2y8E vWc0表示不包括root用户的信息:
"Am5Y9f&J \@0lsof -u ^root
aPl
S
IC0-i 监听指定的协议、端口、主机等的网络信息,格式为:
R i(J1A?%t2m+f0引用
51Testing软件测试网_3nK+zZr0H[46][proto][@host|addr][:svc_list|port_list]
H&C(z PZ4K"N0例如:
51Testing软件测试网-^8mp!N!?#uu
Jlsof -i <!-- var prefix = 'ma' + 'il' + 'to'; var path = 'hr' + 'ef' + '='; var addy67108 = 'tcp' + '@'; addy67108 = addy67108 + '192' + '.' + '168' + '.' + '228' + '.' + '244'; var addy_text67108 = 'tcp' + '@' + '192' + '.' + '168' + '.' + '228' + '.' + '244'; document.write( '<a ' + path + '\'' + prefix + ':' + addy67108 + '\'>' ); document.write( addy_text67108 ); document.write( '<\/a>' ); //-->\n [url=mailto:tcp@192.168.228.244]tcp@192.168.228.244[/url] <!-- document.write( '<span style=\'display: none;\'>' ); //--> 为防备电子邮件地址收集器,这个 E-mail 地址被隐藏,你的浏览器必须支持 Javascript. 才可看到这个邮件地址 <!-- document.write( '</' ); document.write( 'span>' ); //-->
w.?? X1x#\&u.P1md0lsof -i:22
9L
hA%HD0c1S0还可以使用一些参数控制显示结果:
V![Z/|4\&?0引用
F]
bNYX7\A~,V+Y0-l 禁止将userID转换为登陆名称,即显示UID
51Testing软件测试网+i2O,s:x:t~w?)G-n 禁止将IP地址转换为hostname主机文件
51Testing软件测试网
v(^mp-lC-P 不显示端口名称
51Testing软件测试网4B4W:H |O F*_-g s 从PGID列进行匹配
4pF#jS9A0lsof -g 3-10
LN2w1`+K
Y;V0 LXmA;b03、
其他参数
:K2MuI0Mo5Ia7mjV0+f 所有路径参数都必须是文件系统,否则不能执行
n_ ?3xlB"J3O NV0-f 所有路径参数都将作为普通的文件,例如:"-f -- /"中的/,只会匹配单个/路径,而不会是根目录中的所有文件
51Testing软件测试网6U-d| oo i0t!i!w
r+f和-f后都应加上“--”表终结符:
5sI`"G2`"|y0lsof -f -- /
51Testing软件测试网A Ee
o#bU&Y)V+L/-L 打开或关闭文件的连结数计算,当+L没有指定时,所有的连结数都会显示(默认);若+L后指定数字,则只要连结数小于该数字的信息会显示;连结数会显示在NLINK列。
f2w0MW5n8^
k2FB@i0例如:+L1将显示没有unlinked的文件信息;+aL1,则显示指定文件系统所有unlinked的文件信息
51Testing软件测试网9{:?#gkZ:[W"fH%k-L 默认参数,其后不能跟数字,将不显示连结数信息
dy,doy+q6rW0lsof +L1
n
sg~7j1V0-t 仅打印进程,方便
shell脚本调用
51Testing软件测试网,~#`_Il%w#c@S.ilsof -t -c sshd
`8Zp`n_0-F 指定输出那个列,可通过lsof -F?查看
51Testing软件测试网h,F}5p0X.X3ws+V-r 不断执行lsof命令,默认每15秒间隔执行一次
3K?)_7{'?0+r 也是不断执行lsof命令,但直到没有接受到文件信息,则停止