Linux計劃任務,自動刪除n天前的舊檔案
linux是一個很能自動產生檔案的系統,日誌、郵件、備份等。雖然現在硬碟廉價,我們可以有很多硬碟空間供這些檔案浪費,但需求總是多方面的嘛~我就覺得讓系統定時清理一些不需要的檔案很有一種爽快的感覺,嘿嘿~~
語句寫法:
find 對應目錄 -mtime +天數 -name "檔案名稱" -exec rm -rf {} \;
例1:
find /usr/local/backups -mtime +10 -name "*.*" -exec rm -rf {} \;
將/usr/local/backups目錄下所有10天前帶"."的檔案刪除
find:linux的尋找命令,使用者尋找指定條件的檔案
/usr/local/backups:想要進行清理的任意目錄
-mtime:標準語句寫法
+10:尋找10天前的檔案,這裡用數字代表天數,+30表示尋找30天前的檔案
"*.*":希望尋找的資料類型,"*.jpg"表示尋找副檔名為jpg的所有檔案,"*"表示尋找所有檔案,這個可以靈活運用,舉一反三
-exec:固定寫法
rm -rf:強制移除檔案,包括目錄
{} \; :固定寫法,一對大括弧+空格+\+;
若嫌每次手動執行語句太麻煩,可以將這小語句寫到一個可執行檔中,再設定cron調度執行,那就可以讓系統自動去清理相關檔案。
例2:
1.#touch /usr/local/bin/clear
#chmod 777 clear
建立一個可執行檔clear
2.vi clear
編輯clear檔案如下:
#!/bin/sh
find /usr/local/backups -mtime +10 -name "*.*" -exec rm -rf {} \;
ok,儲存退出
3.#crontab -e
將clear檔案加入到系統計劃任務,到點自動執行
輸入:
* 2 * * * /usr/local/bin/clear
這裡的設定是每天淩晨2點執行clear檔案進行資料清理,可以研究一下cron,制定自己需要的計劃任務
樣本:
#!/bin/sh
find /usr/local/jboss-4.2.3.GA/server/default/log -mtime +6 -name "server.log.*" -exec rm -rf {} \;
exit
[root@web3 ~]# crontab -l
* 2 * * * sh /root/AutoDelLog.sh