lsof 命令-列举已被打开的文件
编辑教程lsof 命令
lsof 命令,“list opened files”的缩写,直译过来,就是列举系统中已经被打开的文件。通过 lsof 命令,可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。
基本格式
[root@localhost ~]# lsof [选项]
lsof 命令常用选项及功能
选项 | 功能 |
---|---|
-c 字符串 | 只列出以字符串开头的进程打开的文件。 |
+d 目录名 | 列出某个目录中所有被进程调用的文件。 |
-u 用户名 | 只列出某个用户的进程打开的文件。 |
-p pid | 列出某个 PID 进程打开的文件。 |
例
[root@localhost ~]# lsof | more
#查询系统中所有进程调用的文件
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 8,3 4096 2 /
init 1 root rtd DIR 8,3 4096 2 /
init 1 root txt REG 8,3 145180 130874 /sbin/init
init 1 root mem REG 8,3 142472 665291 /lib/ld-2.12.so
init 1 root mem REG 8,3 58704 655087 /lib/libnss_files-2.12.so
…省略部分输出…
这个命令的输出非常多。它会按照 PID,从 1 号进程开始列出系统中所有的进程正在调用的文件名。
例
[root@localhost ~]# lsof /sbin/init
#查询某个文件被哪个进程调用
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root txt REG 8,3 145180 130874 /sbin/init
lsof 命令也可以反过来查询某个文件被哪个进程调用。这个例子就查询到 /sbin/init 文件是被 init 进程调用的。
例
[root@localhost ~]# lsof +d /usr/lib
#查询某个目录下所有的文件是被哪些进程调用的
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpc.idmap 1196 root mem REG 8,3 26400 279930 /usr/lib/libnfsidmap.so.0.3.0
rpc.idmap 1196 root mem REG 8,3 108948 276696 /usr/lib/libevent-1.4.so.2.1.3
avahi-dae 1240 avahi mem REG 8,3 49124 271310 /usr/lib/libavahi-common.so.3.5.1
avahi-dae 1240 avahi mem REG 8,3 23904 283188 /usr/lib/libdaemon.so.0.5.0
avahi-dae 1240 avahi mem REG 8,3 227212 268396 /usr/lib/libavahi-core.so.6.0.1
avahi-dae 1241 avahi mem REG 8,3 49124 271310 /usr/lib/libavahi-common.so.3.5.1
avahi-dae 1241 avahi mem REG 8,3 23904 283188 /usr/lib/libdaemon.so.0.5.0
avahi-dae 1241 avahi mem REG 8,3 227212 268396 /usr/lib/libavahi-core.so.6.0.1
cupsd 1251 root mem REG 8,3 69564 270210 /usr/lib/libtasn1.so.3.1.6
使用“+d”选项可以搜索某个目录下所有的文件,查看到底哪个文件被哪个进程调用了。
例
[root@localhost ~]# lsof -c httpd
#查看以httpd开头的进程调用了哪些文件
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 4689 root cwd DIR 8,3 4096 2 /
httpd 4689 root rtd DIR 8,3 4096 2 /
httpd 4689 root txt REG 8,3 1797559 2855 /usr/local/apache2/bin/httpd
httpd 4689 root mem REG 8,3 302300 665303 /lib/libfreebl3.so
httpd 4689 root mem REG 8,3 58704 655087 /lib/libnss_files-2.12.s
httpd 4689 root mem REG 8,3 142472 665291 /lib/ld-2.12.so
httpd 4689 root mem REG 8,3 1889704 665292 /lib/libc-2.12.so
…省略部分输出…
使用“-c”选项可以查询以某个字符串开头的进程调用的所有文件,比如执行“lsof-c httpd”命令就会查询出以 httpd 开头的进程调用的所有文件。
例
[root@localhost ~]# lsof -p 1
#查询PID是1的进程调用的文件
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 8,3 4096 2 /
init 1 root rtd DIR 8,3 4096 2 /
init 1 root txt REG 8,3 145180 130874 /sbin/init
init 1 root mem REG 8,3 142472 665291 /lib/ld-2.12.so
init 1 root mem REG 8,3 58704 655087 /lib/libnss_files-2.12.so
也可以按照 PID 查询进程调用的文件,比如执行“lsof -p 1”命令就可以查看 PID 为 1 的进程调用的所有文件。
例
[root@localhost ~]# lsof -u root
#按照用户名查询某个用户的进程调用的文件
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 8,3 4096 2 /
init 1 root rtd DIR 8,3 4096 2 /
init 1 root txt REG 8,3 145180 130874 /sbin/init
init 1 root mem REG 8,3 142472 665291 /lib/ld-2.12.so
init 1 root mem REG 8,3 58704 655087 /lib/libnss_files-2.12.s
init 1 root mem REG 8,3 38768 655310 /lib/libnih-dbus.so.1.0.
…省略部分输出…
还可以查看某个用户的进程调用了哪些文件。
Mos固件,小电视必刷固件
ES6 教程
Vue.js 教程
JSON 教程
jQuery 教程
HTML 教程
HTML 5 教程
CSS 教程
CSS3 教程
JavaScript 教程
DHTML 教程
JSON在线格式化工具
JS在线运行
JSON解析格式化
jsfiddle中国国内版本
JS代码在线运行
PHP代码在线运行
Java代码在线运行
C语言代码在线运行
C++代码在线运行
Python代码在线运行
Go语言代码在线运行
C#代码在线运行
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。
大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
选择支付方式:
立即支付
¥
9.99
无法付款,请点击这里
金额: 0 元
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟