1. 程式人生 > >linux之lsof

linux之lsof

lsof:list open file 列出已被開啟的檔案

選項:

+檔案/目錄  列出當前檔案或目錄是否程序在使用,常用

-u 指定使用者,查詢所屬使用者的程序開啟的檔案

-g 指定使用者組

-d FD 顯示指定檔案描述符的程序

lsof -i 用以顯示符合條件的程序情況

    lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 常用

例項:

列出當前系統所有程序開啟的所有檔案

[[email protected] ~]# lsof #就可以列出當前系統所有程序已開啟的檔案
如:vim install.log 檔案
[
[email protected]
 ~]# lsof |  grep install.log vim       6474    root    4u      REG                8,6    16384        109 /root/.install.log.swp 第一列:程序名稱 第二列:pid 第三列:所屬使用者 第四列:FD檔案描述符,應用程式通過檔案描述符識別該檔案 第五列:檔案型別 第六列:磁碟名稱 第七列:檔案大小 第八列:索引節點(在磁碟上的索引節點) 第九列:檔名稱

恢復已刪除的檔案

[[email protected] ~]# cp install.log install.log1
[[email protected] ~]# vim install.log1     #shell中開啟檔案
[[email protected] ~]# rm -f install.log1   #重新開啟檔案
[[email protected]
 ~]# lsof | grep install.log1                 vim       6487    root    4u      REG                8,6    16384        129 /root/.install.log1.swp [[email protected] ~]# cat /proc/6487/fd/4 >>/root/install.log1   #即可恢復

檢視某個埠是否正在執行

[[email protected] ~]# lsof -i :22
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1135 root    3u  IPv4  11545      0t0  TCP *:ssh (LISTEN)
[[email protected] ~]# lsof -i :111
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 938  rpc    6u  IPv4  10422      0t0  UDP *:sunrpc

檢視某個檔案系統是否正在使用(有使用無法解除安裝)

[[email protected] ~]# lsof /tmp
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    6545 root  cwd    DIR    8,6     4096   14 /tmp    #提示bash正在開啟,且所在目錄是tmp