rm 刪除檔案後磁碟依然占用

2021-08-27 18:17:25 字數 1656 閱讀 9558

lsof命令用於檢視你程序開打的檔案,開啟檔案的程序,程序開啟的埠(tcp、udp)。找回/恢復刪除的檔案。是十分方便的系統監視工具,因為lsof命令需要訪問核心記憶體和各種檔案,所以需要root使用者執行。

在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體。所以如傳輸控制協議 (tcp) 和使用者資料報協議 (udp) 套接字等,系統在後台都為該應用程式分配了乙個檔案描述符,無論這個檔案的本質如何,該檔案描述符為應用程式與基礎作業系統之間的互動提供了通用介面。因為應用程式開啟檔案的描述符列表提供了大量關於這個應用程式本身的資訊,因此通過lsof工具能夠檢視這個列表對系統監測以及排錯將是很有幫助的。

在linux中,當我們使用rm在linux上刪除了大檔案,但是如果有程序開啟了這個大檔案,卻沒有關閉這個檔案的控制代碼,那麼linux核心還是不會釋放這個檔案的磁碟空間,最後造成磁碟空間占用100%,整個系統無法正常執行。這種情況下,通過df和du命令查詢的磁碟空間,兩者是無法匹配的,可能df顯示磁碟100%,而du查詢目錄的磁碟容量占用卻很小。

遇到這種情況,基本可以斷定是某些大檔案被某些程式占用了,並且這些大檔案已經被刪除了,但是對應的檔案控制代碼沒有被某些程式關閉,造成核心無法收回這些檔案占用的空間。

lsof 

command pid user fd type device size node name

init 1 root cwd dir 8,2 4096 2 /

init 1 root rtd dir 8,2 4096 2 /

init 1 root txt reg 8,2 43496 6121706 /sbin/init

init 1 root mem reg 8,2 143600 7823908 /lib64/ld-2.5.so

init 1 root mem reg 8,2 1722304 7823915 /lib64/libc-2.5.so

init 1 root mem reg 8,2 23360 7823919 /lib64/libdl-2.5.so

選項:

-a:列出開啟檔案存在的程序;

-c《程序名》:列出指定程序所開啟的檔案;

-g:列出gid號程序詳情;

-d《檔案號》:列出占用該檔案號的程序;

+d《目錄》:列出目錄下被開啟的檔案;

+d《目錄》:遞迴列出目錄下被開啟的檔案;

-n《目錄》:列出使用nfs的檔案;

-i《條件》:列出符合條件的程序。(4、6、協議、:埠、 @ip )

-p《程序號》:列出指定程序號所開啟的檔案;

-u:列出uid號程序詳情;

-h:顯示幫助資訊;

-v:顯示版本資訊。

另類實驗 Linux啟動後,rm刪除全部磁碟的效果

另類實驗 疑問 在linux啟動後,執行rm rf 刪除所有目錄及檔案,系統還能執行嗎?環境建議 最好在虛擬機器 如vmware 中安裝linux系統進行測試,這樣可以利用虛擬機器的快照功能,隨時可以恢復。linux啟動後,以root使用者執行。提公升需要增加 no preserve root 引數...

python rm 條件 刪除檔案 rm

附錄a 練習14 刪除檔案 rm 這節練習中,你將學會如何使用rm命令刪除乙個檔案。做到這些 linux cd temp ls uncool.txt iamcool.txt neat.txt something thefourthfile.txt rm uncool.txt ls iamcool.t...

掌握rm命令刪除檔案

linux rm命令用於刪除乙個檔案或者目錄。檔案一旦通過rm命令刪除,則無法恢復,所以必須格外小心地使用該命令。語法 rm options name.options 引數 i刪除前逐一詢問確認。f強制刪除。忽略不存在的檔案,不提示確認。r將目錄及以下之檔案亦逐一刪除。v詳細顯示進行的步驟 刪除檔案...