標籤:
作為系統管理員,很多時候需要定期清理一定規則的檔案,比如到期的日誌,到期的歸檔,已備份的檔案等等。
如果使用一定的匹配規則,找出這些檔案,然後再傳遞給rm命令,其實是有點麻煩的,這時候可以試試tmpwatch。
tmpwatch
作用:
刪除一定時間沒有被訪問的檔案。
參數:
-u 按照檔案的最後access時間,即最後訪問時間為參考。可通過ls -lu查看。
-m 按照檔案的最後modified時間,即最後修改時間為參考。可通過ls -l查看。
-c 按照檔案的-ctime時間做參考,ctime更新的條件為寫入、更改屬主、許可權。可通過ls -lc查看。
-x /PATH 排除特定目錄,即不刪除該子目錄裡的檔案。
-U user_name 排除屬於特定使用者的檔案,即不刪除該使用者的檔案。
-v 顯示刪除過程。預設是不顯示刪除了什麼檔案,直接刪除的。
--t 用於測試,並不真正刪除檔案,能顯示出要刪除檔案的過程。
-d 不刪除檔案裡的子目錄,但是子目錄裡面的檔案還是會被刪除。
-f 強制移除那些root沒有寫入權限的檔案。比如root的readonly檔案
參數後加時間,預設是hours。有些文章說可以使用20d表示20天,這個我也見過,但在rhel5.8中,只支援hours。應該需要看版本。
時間後是要檢查的目錄。可以多個目錄用空格分開。
瞭解參數命令後,舉一個典型的例子
tmpwatch -m -x /tmp/ceshi1 -U oracle -v -t 2 /tmp
以上這個命令刪除/tmp目錄下超過兩個小時沒有被更改過且不屬於oracle使用者的檔案,排除/tmp/test1子目錄下的檔案。顯示整個刪除過程,只做測試,不整整刪除。
linux系統會使用這個命令來定時清理/tmp目錄。
下面看下rhel5.8裡的/etc/cron.daily/tmpwatch檔案。
[[email protected] tmp]# cat /etc/cron.daily/tmpwatch flags=-umc/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix -X '/tmp/hsperfdata_*' 240 /tmp/usr/sbin/tmpwatch "$flags" 720 /var/tmpfor d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do if [ -d "$d" ]; then /usr/sbin/tmpwatch "$flags" -f 720 "$d" fidone[[email protected] tmp]#
這就是清理規則。懂文法了可以自己學習下。
shell編程tmpwatch