lsof命令常见参数说明
lsof全名list opened files,也就是列举系统中已经被打开的⽂件。我们都知道,linux环境中,任何事物都是⽂件,设备是⽂件,⽬录是⽂件,甚⾄sockets也是⽂件。所以,⽤好lsof命令,对⽇常的linux管理⾮常有帮助。以下的说明,⼤部分内容来⾃lsof的manual⽂档。我所做的只是在中⽂翻译的基础上,进⾏简单的分类说明,并列举最常⽤的参数。
⼀、输出说明
lsof是linux最常⽤的命令之⼀,通常的输出格式为:
引⽤
COMMAND    PID  USER  FD      TYPE    DEVICE    SIZE      NODE NAME
常见包括如下⼏个字段:更多的可见manual。
1、COMMAND
默认以9个字符长度显⽰的命令名称。可使⽤+c参数指定显⽰的宽度,若+c后跟的参数为零,则显⽰命令的全名
2、PID:进程的ID号
3、PPID
⽗进程的IP号,默认不显⽰,当使⽤-R参数可打开。
4、PGID
进程组的ID编号,默认也不会显⽰,当使⽤-g参数时可打开。
5、USER
命令的执⾏UID或系统中登陆的⽤户名称。默认显⽰为⽤户名,当使⽤-l参数时,可显⽰UID。
6、FD
是⽂件的File Descriptor number,或者如下的内容:
(这⾥很难翻译对应的意思,保留英⽂)
引⽤
cwd  current working directory;
Lnn  library references (AIX);
jld  jail directory (FreeBSD);
ltx  shared library text (code and data);
Mxx  hex memory-mapped type number xx.
m86  DOS Merge mapped file;
mem  memory-mapped file;
mmap memory-mapped device;
pd  parent directory;
rtd  root directory;
rtd  root directory;
tr  kernel trace file (OpenBSD);
txt  program text (code and data);
v86  VP/ix mapped file;
⽂件的File Descriptor number显⽰模式有:
引⽤
r for read access;
w for write access;
u for read and write access;
N for a Solaris NFS lock of unknown type;
r for read lock on part of the file;
R for a read lock on the entire file;
w for a write lock on part of the file;
W for a write lock on the entire file;
u for a read and write lock of any length;
U for a lock of unknown type;
x for an SCO OpenServer Xenix lock on part  of the file;
X  for an SCO OpenServer Xenix lock on the entire file;
space if there is no lock.
7、TYPE
引⽤
IPv4 IPv4的包;
IPv6 使⽤IPv6格式的包,即使地址是IPv4的,也会显⽰为IPv6,⽽映射到IPv6的地址;DIR ⽬录
LINK 链接⽂件
详情请看manual中更多的注释。
8、DEVICE
使⽤character special、block special表⽰的设备号
9、SIZE
⽂件的⼤⼩,如果不能⽤⼤⼩表⽰的,会留空。使⽤-s参数控制。
10、NODE
本地⽂件的node码,或者协议,如TCP等
11、NAME
挂载点和⽂件的全路径(链接会被解析为实际路径),或者连接双⽅的地址和端⼝、状态等
⼆、参数
1、不带额外参数运⾏
lsof path/filename
显⽰已打开该⽬录或⽂件的所有进程信息
lsof `which httpd`
显⽰指定命令的信息
2、参见参数
-c w 显⽰以w开头命令的已打开⽂件的信息
lsof -c sshd
-p PID 显⽰指定PID已打开⽂件的信息
lsof -p 4401
+d dir 依照⽂件夹dir来搜寻,但不会打开⼦⽬录
lsof +d /root
+D dir 打开dir⽂件夹以及其⼦⽬录搜寻
lsof +D /root/
-d s 以FD列的信息进⾏匹配,可使⽤3-10,表⽰范围,3,10表⽰某些值
lsof -d 3-10
linux命令查看文件夹大小-u 显⽰某⽤户的已经打开的⽂件(或该⽤户执⾏程序已经打开的⽂件)
lsof -u root
lsof -u 0
◎可配合正规表达式使⽤
表⽰不包括root⽤户的信息:
lsof -u ^root
-
i 监听指定的协议、端⼝、主机等的⽹络信息,格式为:
引⽤
[46][proto][@host|addr][:svc_list|port_list]
例如:
lsof -i tcp@192.168.228.244
lsof -i:22
还可以使⽤⼀些参数控制显⽰结果:
引⽤
-l 禁⽌将userID转换为登陆名称,即显⽰UID
-n 禁⽌将IP地址转换为hostname主机⽂件
-P 不显⽰端⼝名称
-
g s 从PGID列进⾏匹配
lsof -g 3-10
3、其他参数
+f 所有路径参数都必须是⽂件系统,否则不能执⾏
-f 所有路径参数都将作为普通的⽂件,例如:"-f -- /"中的/,只会匹配单个/路径,⽽不会是根⽬录中的所有⽂件
+f和-f后都应加上“--”表终结符:
lsof -f -- /
+L/-L 打开或关闭⽂件的连结数计算,当+L没有指定时,所有的连结数都会显⽰(默认);若+L后指定数字,则只要连结数⼩于该数字的信息会显⽰;连结数会显⽰在NLINK列。
例如:+L1将显⽰没有unlinked的⽂件信息;+aL1,则显⽰指定⽂件系统所有unlinked的⽂件信息
-L 默认参数,其后不能跟数字,将不显⽰连结数信息
lsof +L1
lsof +L1
-t 仅打印进程,⽅便shell脚本调⽤
lsof -t -c sshd
-F 指定输出那个列,可通过lsof -F?查看
-r 不断执⾏lsof命令,默认每15秒间隔执⾏⼀次
+r 也是不断执⾏lsof命令,但直到没有接受到⽂件信息,则停⽌※部分参数未能完全理解,待以后补充。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。