lsof全名list openedfiles,也就是列举系统中已经被打开的文件。我们都知道,linux环境中,任何事物都是文件,设备是文件,目录是文件,甚至sockets也是文件。所以,用好lsof命令,对日常的linux管理非常有帮助。以下的说明,大部分内容来自lsof的manual文档。我所做的只是在中文翻译的基础上,进行简单的分类说明,并列举最常用的参数。
51Testing软件测试网G}3l.V`m/c*a一、输出说明
51Testing软件测试网6qQ$PsH+r:Hi
j$\ lsof是linux最常用的命令之一,通常的输出格式为:
F S&j)F"Sq9E\,u0引用
5o,k T|_2U0COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
-Uqum/P e2J0常见包括如下几个字段:更多的可见manual。
51Testing软件测试网xhMt-s
{&o1、COMMAND
m$w
\(O;wz8T9v
p0默认以9个字符长度显示的命令名称。可使用+c参数指定显示的宽度,若+c后跟的参数为零,则显示命令的全名
51Testing软件测试网6I3Xst2PI"TM2、PID:进程的ID号
51Testing软件测试网jK$TD-TH3、PPID
51Testing软件测试网TBd
{Md9q父进程的IP号,默认不显示,当使用-R参数可打开。
'b Fs+|Yhi4u04、PGID
51Testing软件测试网-z j-X%\
~?5ht#w进程组的ID编号,默认也不会显示,当使用-g参数时可打开。
q:hE7ONc!Ae?2e05、USER
;V-i[dg)IZ%l/{M0命令的执行UID或系统中登陆的用户名称。默认显示为用户名,当使用-l参数时,可显示UID。
51Testing软件测试网i"yK,KZ#[c5hT+C8Z6、FD
51Testing软件测试网8f
`@7\`是文件的File Descriptor number,或者如下的内容:
51Testing软件测试网i
R DRD(这里很难翻译对应的意思,保留英文)
M5@ K#q9O
C M9t0引用
:N d!PH3P$i0cwd current working directory;
/Ka,KGVeu^a0Lnn library references (AIX);
51Testing软件测试网;U,~^-@:k%o?(^jld jail directory (FreeBSD);
l}!G8l9BHp0ltx shared library text (code and data);
Z$X4SP_;T*w$l1{[0Mxx hex memory-mapped type number xx.
51Testing软件测试网3t8C9t!^fAm86 DOS Merge mapped file;
B
`#BKA7K0mem memory-mapped file;
51Testing软件测试网 z'eD/v4k+_ammap memory-mapped device;
ljuBp1y4\il0pd parent directory;
G#W[M+_g0rtd root directory;
51Testing软件测试网$j7O_E/[.I'Xtr kernel trace file (OpenBSD);
51Testing软件测试网+m2E2q*wr
NsYtxt program text (code and data);
51Testing软件测试网W1Y"J"Y-JW0S.Tv86 VP/ix mapped file;
51Testing软件测试网 B*iLI"~^5l
D@文件的File Descriptor number显示模式有:
z0gc4Lb1^X0引用
51Testing软件测试网 M)I*~Gow_~\qSr for read access;
51Testing软件测试网/Lk4@#w2eb&^,Aw for write access;
51Testing软件测试网J"RG N3L{/\+_!e%lu for read and write access;
q0Ox~1q(_0N for a Solaris NFS lock of unknown type;
Ly.S5LE9j,h0r for read lock on part of the file;
51Testing软件测试网:a!^0NS.L+d'_ER for a read lock on the entire file;
51Testing软件测试网o%i}a7{u-`I!Kw for a write lock on part of the file;
51Testing软件测试网K_4F(D2SI9v
?#oK#feW for a write lock on the entire file;
3^|3tDe!l7W!Fj0u for a read and write lock of any length;
51Testing软件测试网o#t6Ra8bY7RH"v0rU for a lock of unknown type;
51Testing软件测试网4y4Tf w.^vWx for an SCO OpenServer Xenix lock on part of the file;
51Testing软件测试网mK(`Y9O0v&p&}X for an SCO OpenServer Xenix lock on the entire file;
#U kFH%`(J t#[0space if there is no lock.
51Testing软件测试网4XFoYP3r'z#n7、TYPE
W2S/Nz"n0引用
51Testing软件测试网 Q_0F!O[,zRA
o*JIPv4 IPv4的包;
51Testing软件测试网(?F9ubm-i+d:H&fIPv6 使用IPv6格式的包,即使地址是IPv4的,也会显示为IPv6,而映射到IPv6的地址;
51Testing软件测试网/T lsrOh/CDIR 目录
W%Gwp(s,VHu|f\+\0LINK 链接文件
51Testing软件测试网l-A,R;^%_a?!M.t详情请看manual中更多的注释。
_'txMK6q O08、DEVICE
"A'lf:H!z6F0使用character special、block special表示的设备号
51Testing软件测试网(sw1bos(g6jmU9、SIZE
0Sk']:j?+y0文件的大小,如果不能用大小表示的,会留空。使用-s参数控制。
51Testing软件测试网d%f8G
To o)d10、NODE
*W;IDkiD0本地文件的node码,或者协议,如TCP等
?;E9c)_k$de2g7j011、NAME
d`f"O:A0c8lH%mY0挂载点和文件的全路径(链接会被解析为实际路径),或者连接双方的地址和端口、状态等
{P5qV]&L0D6xX0二、参数
/HG
F
tu#YT01、不带额外参数运行
51Testing软件测试网3L)C ~%V|,KFHlsof path/filename
51Testing软件测试网
F~9n!k&?#K5d*R显示已打开该目录或文件的所有进程信息
51Testing软件测试网}ET
OQ[~lsof `which httpd`
pv3x7?
M#`um&B0显示指定命令的信息
51Testing软件测试网E+@dR]3h#qjt2、参见参数
p+?d2A
k G$bdR5J0-c w 显示以w开头命令的已打开文件的信息
X]aq0S`!Kx
@t0lsof -c sshd
51Testing软件测试网i`p#B.C'PA ]d-p PID 显示指定PID已打开文件的信息
51Testing软件测试网'NHC#Sd$M;OH3wJ5x{lsof -p 4401
51Testing软件测试网4H-f
Q$^\)e(`#X4R+d dir 依照文件夹dir来搜寻,但不会打开子目录
&U
a X0nzheOvD0lsof +d /root
^}"v6i!AD'Fb3R0+D dir 打开dir文件夹以及其子目录搜寻
51Testing软件测试网Mz {K|Xlsof +D /root/
51Testing软件测试网1HL0o7E8m-d s 以FD列的信息进行匹配,可使用3-10,表示范围,3,10表示某些值
51Testing软件测试网hqn5O_6gR^*Plsof -d 3-10
Pri+Bf0-u 显示某用户的已经打开的文件(或该用户执行程序已经打开的文件)
i:[;I%~$~~q9B0e5r0lsof -u root
P}U,M:~'[K ]0lsof -u 0
51Testing软件测试网Z+@FKB
d%cBc◎可配合正规表达式使用
51Testing软件测试网w&Mfpa_s表示不包括root用户的信息:
S P2aC`Z
Ze0lsof -u ^root
51Testing软件测试网'~5aJ!\\@-|m-i 监听指定的协议、端口、主机等的网络信息,格式为:
$YxR)gK#O kLX4O0引用
51Testing软件测试网6cp[
G}x^r[46][proto][@host|addr][:svc_list|port_list]
9f-rT'gAd0例如:
~d_,Lel2C([0lsof -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>' ); //-->
51Testing软件测试网n-u+^u
v5rlsof -i:22
51Testing软件测试网IEn4G}_$NVZ还可以使用一些参数控制显示结果:
51Testing软件测试网$D'Ubt'aK%Sq6oe引用
"k~*M*b k0-l 禁止将userID转换为登陆名称,即显示UID
51Testing软件测试网 n7_$B'Y^NO-n 禁止将IP地址转换为hostname主机文件
|fT'DAdS0-P 不显示端口名称
I+bAHveD0-g s 从PGID列进行匹配
0B7@Vp9~/p \RE0lsof -g 3-10
+Lk3^"uO.XAQ051Testing软件测试网4O%O'qA9s~ l2|S3NO3、
其他参数
q
H(MD~ZU)m0+f 所有路径参数都必须是文件系统,否则不能执行
51Testing软件测试网PB]o!v2l-o8D:Ua-f 所有路径参数都将作为普通的文件,例如:"-f -- /"中的/,只会匹配单个/路径,而不会是根目录中的所有文件
51Testing软件测试网I6m [P'Y.CAV+f和-f后都应加上“--”表终结符:
p L['?&``lH l0lsof -f -- /
UI@*y7Fa5OiNf0+L/-L 打开或关闭文件的连结数计算,当+L没有指定时,所有的连结数都会显示(默认);若+L后指定数字,则只要连结数小于该数字的信息会显示;连结数会显示在NLINK列。
51Testing软件测试网b3l~rZ,e,s9Q1dh9c例如:+L1将显示没有unlinked的文件信息;+aL1,则显示指定文件系统所有unlinked的文件信息
Sz1xz+X\+Wt,v.n"w0-L 默认参数,其后不能跟数字,将不显示连结数信息
51Testing软件测试网Luab)m e1Z Clsof +L1
51Testing软件测试网g|Yx0ps9DJh+b-t 仅打印进程,方便
shell脚本调用
51Testing软件测试网&_B4W;luj3}.glsof -t -c sshd
YA.g1J#rI.|^0-F 指定输出那个列,可通过lsof -F?查看
@Bq0t
b9@0-r 不断执行lsof命令,默认每15秒间隔执行一次
51Testing软件测试网aYr;Ot_+nl,Ad9L,bp+r 也是不断执行lsof命令,但直到没有接受到文件信息,则停止