如何檢視程序開啟了哪些檔案

2021-06-07 14:53:06 字數 1282 閱讀 7166

**:

有許多情況下,我們需要檢視乙個程序當前開啟了哪些檔案,反過來我們也希望知道某乙個檔案正在被哪些程序所讀寫。在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下有許多有用的工具可以幫我們完成這兩個工作,下面介紹這兩個工具 lsof與fuser。fuser find files or sockets user 格式 fuser 選項 fna...

檢視程序開啟了哪些檔案

檢視程序開啟了哪些檔案 sudo lsof p pid 如果是分析乙個你不太了解的程序,這個命令比較有用。可以使用lsof p pid grep tcp檢視程序中的 tcp 連線資訊。檢視檔案被哪個程序使用 使用這個命令檢視乙個檔案被哪些程序正在使用sudo lsof path to file,示例...

如何檢視程序開啟了多少執行緒

為什麼要知道某個程序開啟了多少執行緒?好奇,這個很重要 效能調優 概念澄清 這裡所說的執行緒指的是核心級別的執行緒,不是使用者態執行緒,所謂使用者態執行緒是指不依賴作業系統而是在使用者態下實現的執行流排程。這裡的執行緒個數指的是程序執行時的執行緒個數,這個數值會隨著執行緒的建立和銷毀而動態變化。本文...