Linux 下 /tmp目錄清理規則


這兩天上了一個監控java進程的腳本,執行幾天出現進程存在,jps抓取不到進程pid的問題,后來發現是/tmp目錄下的hsperfdata_$user目錄被刪了,確認沒人動tmp目錄,查了一下是自動清理掉的,於是查找資料發現了tmp目錄清理規則,記錄一下

不同的 Linux 發行版其實對 /tmp 目錄的清理方式有所不同:

在某些發行版里, tmp 目錄原來只有在啟動的時候才會被清理

 在 Debian-like 的系統,啟動的時候才會清理 (規則定義在 /etc/default/rcS )
 在 RedHat-like 的系統,按文件存在時間定時清理 (RHEL6 規則定義在 /etc/cron.daily/tmpwatch ; RHEL7 以及 RedHat-like with systemd 規則定義在 /usr/lib/tmpfiles.d/tmp.conf , 通過 systemd-tmpfiles-clean.service 服務調用)
 在 CentOS 里,是按文件存在時間清理的 (通過 crontab 的配置 /etc/cron.daily 定時執行 tmpwatch 來實現)
 在 Gentoo 里也是啟動清理,規則定義在 /etc/conf.d/bootmisc ,但 Gentoo 就是不走尋常路
對於那些只能開機清理臨時文件的發行版,如果作為服務器,這種不重啟就對臨時文件目錄的垃圾不問不管的做事風格實在是很不靠譜。不過從上面其他發行版大家估計也會發現,解決此問題的關鍵就在於 tmpwatch 和定時任務的配合使用。
tmpwatch 是專門用於解決“刪除 xxx 天沒有被訪問/修改過的文件”這樣需求的命令。使用方式也極其簡單:
$ tmpwatch 30d /tmp/
注意在 Ubuntu 的 apt-get 是無法直接安裝 tmpwatch 的,tmpwatch 在 Ubuntu 里叫 tmpreaper:
$ sudoapt-get installtmpreaper
$ sudotmpreaper 30d /tmp


免責聲明!

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



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