linux檔案刪除空間未釋放是為什麼

2021-12-30 09:33:18 字數 723 閱讀 8383

今天在生產環境上某個應用去kafka消費資料一直報錯,日誌資料瘋狂增加,一下子就把磁碟空間佔滿了,本人當時沒想太多直接rm core.log一波,然後發現磁碟空間並未釋放!

原因很顯然就是忽略了有應用一直在往其中寫資料,直接刪除無法釋放磁碟空間。遇到這種問題,依據情況不同解決辦法可以不一樣。

方法一:

首先是找到哪些應用在使用它導致空間沒有釋放:

$ lsof filename|grep deleted得到程序號,如果程序不重要可以直接kill再重啟。

方法二:

如果應用不能重啟呢,這個時候就需要在不重啟應用的情況下操作,找到對應程序號後,直接cd /proc/pid/fd(fd中記錄的是這個程序開啟的所有檔案的資訊),pid是程序號,在通過方法一的lsof查詢到被刪除檔案資訊的時候,其中有一項是fd,這個值有最後一位去除(最後一位可能是w/r/u等表示檔案狀態),例如fd值為50w,則在fd路徑下對應的檔案是50,直接執行:

$ echo "" > 50將檔案給置空了,然後就發現空間釋放了!

上述兩個方法是針對問題發生後的解決辦法,但是如何避免出現上述問題呢,暫時了解的辦法是如果是某個文字佔據空間太多需要刪除,不要直接rm刪除,用echo "" > filename的方式先對文字置空,然後如果還是看不順眼就可以直接rm刪除了,此時即便還有應用在使用它,刪除後也會釋放空間。

還有一種情況會導致空間未釋放是因為刪除的檔案是inode對應檔案的乙個硬鏈結而已,解決辦法參考後面寫的解決方法!

Linux刪除檔案空間未釋放

郵件保障 u01目錄剩餘空間不足5 在linux或者unix系統中,通過rm或者檔案管理器刪除檔案將會從檔案系統的目錄結構上解除鏈結 unlink 然而如果檔案是被 開啟的 有乙個程序正在使用 那麼程序將仍然可以讀取該檔案,磁碟空間也一直被占用。檢視被開啟的已刪除檔案 驗證該檔案是否存在 正常來說直...

筆記 Linux檔案刪除空間未釋放

一次檢查過程中,使用df h 檢查磁碟使用,發現 var目錄空間使用100 通過檢查,發現是檔案maillog 20200723導致,故進行了刪除操作 但是發現刪除檔案後,使用df h 發現空間仍然占用100 檢查刪除檔案的程序 lsof grep deleted rsyslogd 1873 roo...

關於mysql資料刪除後空間未釋放

有很多人在做mysql資料庫的時候,當資料刪除的時候,以為空間釋放了,其實並不是,空間沒有被釋放,導致磁碟的空間越來越小。大家可以右擊檢視表資訊,有個資料可用空間一欄,如果為o,說明沒有為釋放的磁碟空間,如果大於0 說明裡面有未釋放的空間,這裡就需要去釋放該錶的空間了。只要執行sql語句 optim...