lsof 命令小结

来源:互联网 发布:大单托底又不拉升 知乎 编辑:程序博客网 时间:2024/04/29 10:04

在UNIX系统下, 可以把任何一个对象看成是对象。如一个正在运行的进程(/proc/run/sys … etc)。访问文件不仅仅指的是常规的文件(regular, binary), 也有许多其他类型的文件,如block,charcater,FIFO,unix socket, socket等。当你通过ls命令,来查看指定目录下的目录清单的时候,可以查看一部分文件类型的目录清单,但有些情况不存在对应得目录清单, 如TCP和UDP socket就是这样的例子。但后台为该应用程序提供一个文件描述符,这个文件描述符为应用程序和操作系统提供操作的接口。

 

lsof的基本用法

直接在命令行执行lsof, 你会得到类似如下的信息:

COMMAND     PID       USER   FD      TYPE             DEVICE     SIZE       NODE NAME
init          1       root  cwd       DIR              104,1     4096          2 /
init          1       root  rtd       DIR              104,1     4096          2 /
init          1       root  txt       REG              104,1    37384    2318357 /sbin/init
init          1       root  mem       REG              104,1    14696    3573005 /lib/libdl-2.11.2.so
init          1       root  mem       REG              104,1  1432968    3573006 /lib/libc-2.11.2.so
init          1       root  mem       REG              104,1   109464    3571777 /lib/libselinux.so.1
init          1       root  mem       REG              104,1   237168    3571778 /lib/libsepol.so.1
init          1       root  mem       REG              104,1   128744    3573018 /lib/ld-2.11.2.so
init          1       root  10u     FIFO               0,13                2708 /dev/initctl
kthreadd      2       root  cwd       DIR              104,1     4096          2 /
kthreadd      2       root  rtd       DIR              104,1     4096          2 /
kthreadd      2       root  txt   unknown                                        /proc/2/exe

输出的字段含义:

COMMAND-- 命令名称  PID-- 进程ID   USER-- 进程的拥有者

FD和TYPE字段包含关于该文件如何使用的更多信息, FD表示文件描述符,应用程序通过文件描述符来访问文件。Type列提供了关于文件的更多描述。

FD字段的值“CWD”表示当前应用程序的工作目录, “TXT”表示程序的txt或data段。 而在上面的例子中“10u” 表示init程序以FIFO方式打开/dev/initctl, 其文件描述符为10, 并且“u”表示该文件处于读入/写出模式,其他的还有“r”和“u”分别表示以只读和只写模式打开。

与FD字段相比, TYPE字段更简单些, 可能的值为DIR(目录)REG(文件),CHR(字符设备),BLK(块设备),UNIX(Unix domain socket),FIFO(命名管道), IPv4(internet 套接字)。

lsof的实际使用场景:

lsof –a –p 605 –d ^txt

-a 表示与的关系,也就是-p 605 和 –d ^txt二者都要成立。

 

lsof查看网络连接:

网络连接也是文件,因此也可以通过lsof来获取他们的信息。如果你只知道相应的端口,如80, 则可以用lsof –i :80 来进行套接字收索。

lsof –i :80  查看监听80端口的进程

COMMAND  PID     USER         FD    TYPE  DEVICE SIZE NODE NAME
apache2          5177     root             4u    IPv6   6484160             TCP  *:www (LISTEN)
apache2          6373   www-data    4u     IPv6   6484160             TCP  *:www (LISTEN)
apache2          6374   www-data    4u     IPv6   6484160              TCP  *:www (LISTEN)

 

原文出自如下连接:

http://www.ibm.com/developerworks/cn/aix/library/au-lsof.html

原创粉丝点击