Linux tmp目錄自動清理總結


在Linux系統中/tmp文件夾下的文件是會被清理、刪除的,文件清理的規則是如何設定的呢? 以Redhat為例,這個主要是因為作業里面會調用tmpwatch命令刪除那些一段時間沒有訪問的文件。

其實tmpwatch是一個命令或者說是一個包。

 

 關於tmpwatch命令的參數,不同版本可能有所不同。

作用:

刪除一段時間沒有被訪問的文件。

參數:

-u 按照文件的最后access時間,即最后訪問時間為參考。默認選項。可通過ls -lu查看。

-m 按照文件的最后modified時間,即最后修改時間為參考。可通過ls -l查看。

-c 按照文件的-ctime時間做參考,ctime更新的條件為寫入、更改屬主、權限。可通過ls -lc查看。

-M 按照目錄的修改時間來刪除目錄而不是訪問時間。

-a 刪除所有類型文件。包括目錄和symbolic links

-d --nodirs 排除目錄文件,即使是空目錄。

-d --nosysmlinks 排除symbolic links類型文件。

-f 強制刪除那些root沒有寫權限的文件。比如root的readonly文件

-q 只報告錯誤信息。

-x /PATH 排除特定目錄,即不刪除該子目錄里的文件。

-U user_name 排除屬於特定用戶的文件,即不刪除該用戶的文件。

-v 顯示刪除過程。默認是不顯示刪除了什么文件,直接刪除的。

-t 用於測試,並不真正刪除文件,能顯示出要刪除文件的過程。

-d 不刪除文件里的子目錄,但是子目錄里面的文件還是會被刪除。

 

參數后加時間,默認是hours。也可以使用30d表示30天,但是有些版本只支持hours。 時間后是要檢查的目錄。可以多個目錄用空格分開。如下所示表示720小時~=30天。

more /etc/cron.daily/tmpwatch

如果想將強制刪除30天沒有訪問的文件改為7天,只需"/usr/sbin/tmpwatch "$flags" 720 /var/tmp"和"/usr/sbin/tmpwatch "$flags" -f 720 "$d" 里面的720改為189即可。

 

若因某些程序需要在/tmp目錄下生成臨時文件,但因/tmp目錄空間不足導致程序運行異常,此時需手動對/tmp下文件進行清理

手動清理:

新建文件夾/root/tmplog,創建tmpwatch.sh腳本

添加定時任務(每5小時執行一次)

crontab -e

* */5 * * * sh /root/tmplog/tmpwatch.sh

程序運行后會自動生成tmp.log日志文件

查看刪除條數:cat tmp.log|wc -l

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM