linux Shell: 定時清理指定目錄下大於指定大小、指定檔名的檔案?
定時清理指定目錄下大於指定大小、指定檔名的檔案
1、查詢指定目錄下大於(小於)指定大小、指定檔名的檔案
find pathname –size +filesizec –name filename
find pathname –size -filesizec –name filename
2、清理(刪除)
find pathname –size filesize –exec rm {} \;
3、定時
usage: crontab [-u user] file
crontab [-u user] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
crontab定時時間格式如下:
t1 t2 t3 t4 t5 program
t1:表示分鐘,取值(0-59)。
t2:表示小時,取值(0-23)。
t3:表示日,取值(1-31)。
t4:表示月份,取值(1-12)。
t5:表示星期,取值(0-6),0是星期天。
還有幾個特殊的符號:“*”,“/”,“-”。
“*”表示所有取值範圍內的數字,“/”表示每的意思,比如在分鐘上 */2 ,表示每兩分鐘為一個單位,“-”表示從某個數字到某個數字。
由於crontab是個全域性命令,因此可以在任何目錄下操作crontab。
例項及總結:
在每週五的5點5分刪除temp目錄下檔案大小走超過1KB的所有檔案。
(1)檔名為findfile.sh,如下:
#!/bin/sh find temp -size +1k -exec rm {} /; |
(2)然後對findfile.sh檔案操作:
chmod u+rwx findfile.sh #修改檔案屬性,使該shell指令碼可執行。 |
(3)在當前目錄下 crontab -e編輯crontab,鍵入i使其成為可輸入,輸入如下內容:
5 5 * * 5 /bin/sh /home/findfile.sh |
/bin/sh代表shell程式,可以通過which sh 命令來檢視機器的shell程式在哪個目錄。
(4)啟動cron服務
sudo /usr/sbin/service cron start |
參考: