Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32309
  • 博文数量: 24
  • 博客积分: 622
  • 博客等级: 上士
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-28 14:11
文章分类
文章存档

2013年(2)

2012年(2)

2011年(8)

2010年(12)

我的朋友

分类:

2010-10-09 10:38:35


lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。 
lsof使用 
lsof输出信息含义 

在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。 

COMMAND    PID      USER   FD      TYPE     DEVICE     SIZE       NODE      NAME 
init       1         root  cwd      DIR       3,3       1024       2         / 
init       1         root  rtd      DIR       3,3       1024       2         / 
init       1         root  txt      REG       3,3       38432      1763452  /sbin/init 
init       1         root  mem      REG       3,3       106114     1091620  /lib/libdl-2.6.so 
init       1         root  mem      REG       3,3       7560696    1091614  /lib/libc-2.6.so 
init       1         root  mem      REG       3,3       79460      1091669  /lib/libselinux.so.1 
init       1         root  mem      REG       3,3       223280     1091668  /lib/libsepol.so.1 
init       1         root  mem      REG       3,3       564136     1091607  /lib/ld-2.6.so 
init       1         root  10u      FIFO      0,15                  1309     /dev/initctl 

每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。lsof输出各列信息的意义如下: 

COMMAND:进程的名称 
PID:进程标识符 
USER:进程所有者 
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 
TYPE:文件类型,如DIR、REG等 
DEVICE:指定磁盘的名称 
SIZE:文件的大小 
NODE:索引节点(文件在磁盘上的标识) 
NAME:打开文件的确切名称 

lsof [options] filename 

常用的参数列表: 

lsof  filename 显示打开指定文件的所有进程 
lsof -a 表示两个参数都必须满足时才显示结果 
lsof -c string   显示COMMAND列中包含指定字符的进程所有打开的文件 
lsof -u username  显示所属user进程打开的文件 
lsof -g gid 显示归属gid的进程情况 
lsof +d /DIR/ 显示目录下被进程打开的文件 
lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长 
lsof -d FD 显示指定文件描述符的进程 
lsof -n 不将IP转换为hostname,缺省是不加上-n参数 
lsof -i 用以显示符合条件的进程情况 
lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 
            46 --> IPv4 or IPv6 
            protocol --> TCP or UDP 
            hostname --> Internet host name 
            hostaddr --> IPv4地址 
            service --> /etc/service中的 service name (可以不只一个) 
            port --> 端口号 (可以不只一个) 

阅读(361) | 评论(0) | 转发(0) |
0

上一篇:nmon

下一篇:linux 批量改名

给主人留下些什么吧!~~