lsof命令

问题由来:

1.如何查看某个文件被哪个进程打开

答案:

  lsof |grep  -i file 

案例:

[root@iZ280vfehieZXZ ~]# lsof /usr/sbin/crond 
COMMAND PID USER  FD   TYPE DEVICE SIZE/OFF    NODE NAME
crond   991 root txt    REG  202,1    64096 1058361 /usr/sbin/crond

结果注释:

每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。

lsof输出各列信息的意义如下:

COMMAND:进程的名称

PID:进程标识符pid

USER:进程所有者

FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等

TYPE:文件类型,如DIR、REG等

DEVICE:指定磁盘的名称

SIZE:文件的大小

NODE:索引节点(文件在磁盘上的标识)

NAME:打开文件的确切名称

案例:

COMMAND     PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
init          1 root  cwd       DIR              202,1     4096          2 /
init          1 root  rtd       DIR              202,1     4096          2 /
init          1 root  txt       REG              202,1   150352     655401 /sbin/init
init          1 root  mem       REG              202,1    65928     262212 /lib64/libnss_files-2.12.so
init          1 root  DEL       REG              202,1              262156 /lib64/libc-2.12.so
init          1 root  DEL       REG              202,1              262147 /lib64/libgcc_s-4.4.7-20120601.so.1.#prelink#.FilsAv
init          1 root  DEL       REG              202,1              268866 /lib64/librt-2.12.so
init          1 root  DEL       REG              202,1              262180 /lib64/libpthread-2.12.so.#prelink#.gv3uO3
init          1 root  DEL       REG              202,1              262211 /lib64/libdbus-1.so.3.4.0.#prelink#.5jXtwN
init          1 root  mem       REG              202,1    39896     265469 /lib64/libnih-dbus.so.1.0.0
init          1 root  mem       REG              202,1   101920     265471 /lib64/libnih.so.1.0.0
init          1 root  DEL       REG              202,1              268698 /lib64/ld-2.12.so
init          1 root    0u      CHR                1,3      0t0       3923 /dev/null
init          1 root    1u      CHR                1,3      0t0       3923 /dev/null
init          1 root    2u      CHR                1,3      0t0       3923 /dev/null
init          1 root    3r     FIFO                0,8      0t0       6773 pipe
init          1 root    4w     FIFO                0,8      0t0       6773 pipe
init          1 root    5r      DIR               0,10        0          1 inotify
init          1 root    6r      DIR               0,10        0          1 inotify
init          1 root    7u     unix 0xffff8800378df400      0t0       6774 socket
kthreadd      2 root  cwd       DIR              202,1     4096          2 /
kthreadd      2 root  rtd       DIR              202,1     4096          2 /
kthreadd      2 root  txt   unknown                                        /proc/2/exe

  关于FD 文件描述符的讲解:

  cwd 值表示应用程序的当前工作目录,就是该应用程序的启动目录,,txt 类型的文件,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序。

  文件和目录分别称为 REG 和 DIR。而CHR 和 BLK,分别表示字符和块设备;或者 UNIX、FIFO 和 IPv4,分别表示 UNIX 域套接字、先进先出 (FIFO) 队列和网际协议 (IP) 套接字。

   参考的文章:

  http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316599.html

  http://wowubuntu.com/lsof.html

  http://www.cnblogs.com/wangkangluo1/archive/2012/04/18/2454916.html

posted @ 2017-01-03 22:02  -起风了🪐  阅读(171)  评论(0编辑  收藏  举报