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;

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



-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



-t 仅打印进程,方便shell脚本调用

lsof -t -c sshd



-F 指定输出那个列,可通过lsof -F?查看

-r 不断执行lsof命令,默认每15秒间隔执行一次

+r 也是不断执行lsof命令,但直到没有接受到文件信息,则停止



※部分参数未能完全理解,待以后补充。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值