首页 > 编程笔记

Linux lsof命令的用法

我们前面学习了可以使用 ps 命令(阅读《Linux ps命令》一节)查询到系统中所有的进程,现在来学习一个新的命令 lsof。通过 lsof 命令,可以根据文件找到相对应的进程信息,也可以根据进程信息找到进程打开的文件。

lsof 命令的基本格式如下:

[root@bogon ~]# lsof [选项]

lsof 命令常用选项及作用如表 1 所示。

表 1 lsof命令常用选项及作用
选 项 作 用
-c 字符串 只列出以字符串开头的进程打开的文件
+d 目录名 列出某个目录中所有被进程调用的文件
-u 用户名 只列出某个用户的进程打幵的文件
-p pid 列出某个 PID 进程打开的文件

【例 1】查询系统中所有进程调用的文件。

在终端页面输入如下命令:
[root@bogon ~]# lsof | more
COMMAND    PID      USER   FD      TYPE             DEVICE  SIZE/OFF       NODE   NAME
init         1      root  cwd       DIR                8,2      4096          2   /
init         1      root  rtd       DIR                8,2      4096          2   /
init         1      root  txt       REG                8,2    150352     651568   /sbin/init
init         1      root  mem       REG                8,2     65928     260642   /lib64/libnss_files-2.12.so

打印信息中有很多的输出,但系统会按照 PID,从 1 号进程开始列出系统中所有的进程正在调用的文件名。

同样,我们可以按照 PID 查询进程调用的文件。例如:执行 lsof -p 1 命令就可以查看 PID 为 1 的进程调用的所有文件。

【例 2 】查询 PID 是 1 的进程调用的文件。
[root@bogon ~]# lsof -p 1
COMMAND PID USER   FD   TYPE             DEVICE SIZE/OFF   NODE NAME
init      1 root  cwd    DIR                8,2     4096      2 /
init      1 root  rtd    DIR                8,2     4096      2 /
init      1 root  txt    REG                8,2   150352 651568 /sbin/init
init      1 root  mem    REG                8,2    65928 260642 /lib64/libnss_files-2.12.so

另外还可以查看某个用户的进程调用了哪些文件。

【例 3】按照用户名查询某个用户的进程调用的文件。在终端页面输入如下命令:

 [root@bogon ~]# lsof -u root
COMMAND        PID  USER     FD   TYPE   DEVICE    SIZE/OFF       NODE    NAME
             lsof      2962    root    rtd      DIR          8,2          4096               2     /
             lsof      2962    root    txt       REG         8,2      145872     807484     /usr/sbin/lsof
             lsof      2962    root  mem     REG         8,2      156928     268283     /lib64/ld-2.12.so
             lsof      2962    root  mem     REG         8,2       22536      268293     /lib64/libdl-2.12.so
             lsof      2962    root  mem     REG         8,2     1926800    268285     /lib64/libc-2.12.so
......

优秀文章