1. 程式人生 > >linux Shell: 定時清理指定目錄下大於指定大小、指定檔名的檔案?

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指令碼可執行。
                                   #在該指令碼所在目錄,./findLog.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

參考: