lsof命令 詳解

2021-08-31 02:29:56 字數 2169 閱讀 3010

lsof命令的原始功能是列出開啟的檔案的程序,但linux下,所有的裝置都是以檔案的行式存在的,所以,lsof的功能很強大!

語法:lsof [-?ahlnnprsv][-c c][+|-d d][+|-d d][-g [s]] [+|-l [i]][-p s][+|-r [t]][-u s][names]

引數說明:若沒有加上任何引數,lsof會列出所有被程式開啟的檔案。

-? -h 這兩個引數意思相同,顯示出lsof的使用說明 -a 引數被視為and,會影響全部的引數

-c c 顯示出以字元或字串c開頭的命令程式開啟的檔案,如$lsof -c init

+d s 在資料夾s下搜尋,此引數不會繼續深入搜尋此資料夾。如顯示在/usr/local下被程式開啟的檔案:$lsof +d /usr/local +d d 同上,但是會以該檔案為基礎往下全部搜尋,這樣花費較大的cpu時 間,請謹慎使用

-d s 此引數以file descriptor(fd)值顯示結果,可以採用範圍(1-3)或個別,如顯示fd為4的程序:$lsof -d 4

-g [s] 以程式的pgid顯示,也可以採用範圍或個別表示,若沒有特別指定,則顯示全部,如顯示pgid為6的程序:$lsof -g 6

-i 用以監聽有關的任何符合的位址,若沒有相關位址被指定,則監聽全部 

語法: lsof -i [46][protocol][@hostname|hostaddr][:serivce|port]

說明: 46  ipv4 or ipv6

protocol tcp or udp

hostname internet host name

hostaddr ipv4位址

service /etc/service中的service name

port 埠號

-l 此引數禁止將user id 轉換為登入的名稱,預設是登入名稱

+|-l [l] +或-表示開啟或關閉顯示檔案連線數,如果只有單純的+l,後面沒有任何數字,則表示顯示全部,如果後面有數字,只有檔案連線數少於該數字的會被列出

-n 不將ip位址轉換為hostname,預設是轉換的

-n 顯示nfs的檔案

-p s 以pid作為顯示的依據

-p 此引數禁止將port number轉換為service name,預設為轉換

+|-r [t] 控制lsof不斷重複執行,t為15秒,也就是說每隔15秒再重複執行 +r 一直執行,直到沒有檔案被顯示 -r 永遠不斷的執行,直到收到中斷訊號(ctrl+ c)

-r 此引數增列出pid的子程式,也就是ppid

-s 列出檔案的大小,若該檔案沒有大小,則留下空白

-u s 列出login name或uid為的程式

-v 顯示lsof的版本資訊

lsof命令的妙用:

當程序開啟了某個檔案時,只要該程序保持開啟該檔案,即使將其刪除,它依然存在於磁碟中。這意味著,程序並不知道檔案已經被刪除,它仍然可以向開啟該檔案時提供給它的檔案描述符進行讀取和寫入。除了該程序之外,這個檔案是不可見的,因為已經刪除了其相應的目錄條目。

在這個示例中,您可以看到 pid 2452 開啟檔案的檔案描述符為 2(標準錯誤)和 7。因此,可以在 /proc/2452/fd/7 中檢視相應的資訊,如清單 1 所示。

清單 1. 通過 /proc 查詢刪除的檔案

# cat /proc/2452/fd/7

[sun apr 30 04:02:48 2006] [notice] digest: generating secret for digest authentication

[sun apr 30 04:02:48 2006] [notice] digest: done

[sun apr 30 04:02:48 2006] [notice] ldap: built with openldap ldap sdk

Lsof命令詳解

一般root使用者才能執行lsof命令,普通使用者可以看見 usr sbin lsof命令,但是普通使用者執行會顯示 permission denied 我總結一下lsof指令的用法 lsof abc.txt 顯示開啟檔案abc.txt的程序 lsof i 22 知道22埠現在執行什麼程式 lsof...

lsof命令詳解

lsof 乙個功能強大的命令 lsof命令的原始功能是列出開啟的檔案的程序,但linux下,所有的裝置都是以檔案的行式存在的,所以,lsof的功能很強大!語法 lsof ahlnnprsv c c d d d d g s l i p s r t u s names 引數說明 若沒有加上任何引數,ls...

lsof 命令詳解

lsof list open files 代表列出一些列開啟的檔案。在unix系統中,每乙個東西都是乙個檔案 管道,套接字,目錄,裝置等 這樣的話,你可以通過lsof命名列出所有開啟的檔案。預設情況下,lsof僅僅列出一些列屬於啟用程序的大檔案。command pid user fd type de...