1、指令及其意義
指令:lsof (list opened files)
意義:通過 lsof 指令,我們就可以根據檔案找到對應的程序資訊,也可以根據程序資訊找到程序打開的檔案。
2、指令的格式
3、選項
- -c 字元串 隻列出以字元串開頭的程序打開的檔案。
- +d 目錄名 列出某個目錄中所有被程序調用的檔案。
- -u 使用者名 隻列出某個使用者的程序打開的檔案。
- -p pid 列出某個 PID 程序打開的檔案。
4、舉例
例1:檢視所有程序調用的檔案
[[email protected] ~]# 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
…省略部分輸出…
例2:查詢某個檔案被哪個程序調用
[[email protected] ~]# lsof /sbin/init
#查詢某個檔案被哪個程序調用
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root txt REG 8,3 145180 130874 /sbin/init
例3:檢視某個目錄下的檔案被什麼程序調用
[[email protected] ~]# 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
例4:檢視以某個字元串開頭的程序調用了什麼檔案
[[email protected] ~]# 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
…省略部分輸出…
例5:以程序的ID來檢視調用情況
[[email protected] ~]# 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
例6:檢視某個使用者的程序調用了哪些檔案
[[email protected] ~]# 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.
…省略部分輸出…