linux 系統應該刪除哪些檔案

2021-07-24 17:57:02 字數 1472 閱讀 4725

磁碟空間滿

由於linux沒有**站功能,所以線上伺服器上所有要刪除的檔案都會先移動到系統/tmp目錄下,然後定期清除/tmp目錄下的資料。這個策略本身沒有問題,但是通過檢查發現這台伺服器的系統分割槽中並沒有單獨劃分/tmp分割槽,這樣/tmp下的資料其實占用了根分割槽的空間。既然找到了問題,那麼刪除/tmp目錄下一些佔空間較大的資料檔案即可,檢查/tmp下最大的三個資料文。

du -sh /tmp/* | sort -nr | head -3 

檢視/tmp下最大的前三個資料檔案 通過命令輸出發現在/tmp目錄下有個66gb大小的檔案access_log,這個檔案應該是apache產生的訪問日誌檔案,從日誌大小來看,應該是很久沒有清理apache日誌檔案了,基本判定是這個檔案導致的根空間爆滿,在確認此檔案可以刪除後,執行如下刪除操作:

rm /tmp/access_log 

接著檢視系統根分割槽空間是否釋放,從輸出可以看到,根分割槽空間仍然沒有釋放,這是怎麼回事?

刪除檔案空間不釋放

一般來說不會出現刪除檔案後空間不釋放的情況,但是也存在例外,比如檔案被程序鎖定,或者有程序一直在向這個檔案寫資料等,要理解這個問題,就需要知道linux下檔案的儲存機制和儲存結構。

檔案的資料與指標部分

乙個檔案在檔案系統中的存放分為兩個部分:資料部分和指標部分,指標位於檔案系統的meta-data中,在將資料刪除後,這個指標就從meta-data中清除了,而資料部分儲存在磁碟中。在將資料對應的指標從meta-data中清除後,檔案資料部分占用的空間就可以被覆蓋並寫入新的內容,之所以在出現刪除access_log檔案後,空間還沒釋放,就是因為httpd程序還在一直向這個檔案寫入內容,導致雖然刪除了access_log檔案,但是由於程序鎖定,檔案對應的指標部分並未從meta-data中清除,而由於指標並未刪除,系統核心就認為檔案並未刪除。

查詢被應用程式占用的已刪除檔案列表

因此通過df命令查詢空間並未釋放也就既然有了解決問題的思路,那麼接下來看看是否有程序一直在向access_log檔案中寫資料,這裡需要用到linux下的lsof命令,通過這個命令可以獲取乙個仍然被應用程式占用的已刪除檔案列表:

lsof | grep 

delete

從輸出結果可以看到,/tmp/access_log檔案被程序httpd鎖定,而httpd程序還一直向這個檔案寫入日誌資料。從第7列可知,這個日誌檔案大小約70gb,而系統根分割槽總大小才100gb,由此可知,這個檔案就是導致系統根分割槽空間耗盡的罪魁禍首。最後一列的「deleted」狀態說明這個日誌檔案已經被刪除,但由於程序還在一直向此檔案寫入資料,因此空間並未釋放。

正確地清空檔案

[root@localhost ~]# echo 

" ">/tmp/access_log 

Linux檔案系統刪除檔案深入剖析

與dos windows不同,unix檔案被刪除後很難恢復,這是由unix獨特 的檔案系統結構決定的。unix檔案目錄不像dos windows那樣,文 件即使被刪除之後仍儲存有完整的檔名 檔案長度 始簇號 即 檔案占有的第乙個磁碟塊號 等重要資訊 相反,它的檔案資訊全部 依靠一種被稱為i節點的資料...

linux系統有哪些

常見的linux作業系統有哪些?1 veket系統 veket系統目前包括veket x86平台系統和隨身系統,還有上網本系統,分別對應veket 8系統 veket 7系統和veket 5系統。經過測試,veket 7和veket 5在使用上比較完善。veket 8目前還處於測試期,在功能上可能還...

應用監控系統框架應該包括哪些內容 ?

應用監控的物件包括各種裝置,軟體,需要多種處理技術。採用框架可以規範整合各種技術和軟體,適應監控物件和監控功能不斷發展的需要。不斷改進和提高監控系統建設質量和效率。監控框架 滿足應用監控需求.確定各個部件的功能.指導系統實施.適應多種應用的監控要求.適應大規模企業監控要求.小企業要求方便.不同框架....