linux执行lsof命令_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

......

你可能感兴趣的:(linux执行lsof命令)