Linux下檢視程序開啟的檔案與開啟檔案的程序

2021-08-21 03:41:56 字數 1279 閱讀 3818

有許多情況下,我們需要檢視乙個程序當前開啟了哪些檔案,反過來我們也希望知道某乙個檔案正在被哪些程序所讀寫。在linux下有許多有用的工具可以幫我們完成這兩個工作,下面介紹這兩個工具:lsof與fuser。

fuser find files or sockets' user

格式:fuser [選項] fname

-k 如果找到開啟檔案的程序,則傳送sigkill殺死此程序,通過-i選項,可以為使用者提供互動選擇

-signal 使用者可以指定使用何種訊號去kill程序,如果-k引數指定,則忽略此引數

-m 如果指定乙個檔案,則所有訪問那個檔案所在檔案系統的程序都會被列出來

-n  type 指定不同的檔案型別,預設型別為file,此外還支援tcp和udp型別,此時可以簡寫作port/tcp

-u  顯示程序屬主

-v  顯示詳細程序與開啟檔案資訊

-4/-6 只搜尋ipv4/ipv6套接字

例如,我們想檢視埠tcp埠9000由哪個程序開啟 fuser -v -u 9000/tcp

檢視哪些程序在訪問/home掛載分割槽              fuser -mv /home

lsof list open file

格式:lsof  [選項] [names]

單獨執行lsof將輸出系統中所有開啟的檔案,我們可以grep過濾出我們關心的內容,不過lsof提供了相應的引數幫助我們精確查詢

lsof name 將輸出所有使用檔案name的程序

-p pid 列出程序pid所開啟的所有檔案

-d fd_pattern 列出所有已經開啟的fd值為fd_pattern的檔案fd的值有整數,txt,mem等等

-a lsof後可以加多個匹配條件,預設為or連線,此引數將多個條件變成and關係

-i [46] [proto] [@hostname|ip][:service|port] 用來選擇占用某個埠的程序

+d/+d dir 非遞迴或遞迴的顯示開啟dir下檔案的程序

-c string   顯示程序的command中包含string的程序所開啟的檔案

-u username 顯示屬於user的程序所開啟的檔案

-g gid

以上這些引數已經足夠用了,上面這兩個工具都是讀取/proc檔案系統中的資料進行工作的。網上有提到借助於lsof的查詢功能,可以對乙個刪除的檔案進行恢復,前提是占用這個檔案的程序當前還沒有關閉。通過被刪除的檔案,找到對應的程序及在程序中的fd-num,然後通過cat /proc/process-num/fd/fd-num即可恢復被刪除的檔案。

出處:

Linux下檢視程序開啟的檔案控制代碼數

檢視系統預設的最大檔案控制代碼數,系統預設是1024 ulimit n 1024 檢視當前程序開啟了多少控制代碼數 lsof n awk sort uniq c sort nr more 131 24204 57 24244 57 24231 其中第一列是開啟的控制代碼數,第二列是程序id。可以根據...

Linux下檢視程序開啟的檔案控制代碼數

檢視系統預設的最大檔案控制代碼數,系統預設是1024 ulimit n 1024 檢視當前程序開啟了多少控制代碼數 lsof n awk sort uniq c sort nr more 131 24204 57 24244 57 24231 其中第一列是開啟的控制代碼數,第二列是程序id。可以根據...

Linux下檢視程序開啟的檔案控制代碼數

ulimit n 1024 檢視當前程序開啟了多少控制代碼數 lsof n awk sort uniq c sort nr more 131 24204 57 24244 57 24231 其中第一列是開啟的控制代碼數,第二列是程序id。可以根據id號來檢視程序名。ps aef grep 24204...