# 在排程裡面加入一個定期清理log的shell **輸入** ```=\ crontab -e ``` **設定排程:** 使用者所建立的crontab檔案中,每一行都代表一項任務,每行的每個欄位代表一項設定,它的格式共分為六個欄位,前五段是時間設定段,第六段是要執行的命令段,格式如下: minute hour day month week command 其中: minute: 表示分鐘,可以是從0到59之間的任何整數。 hour:表示小時,可以是從0到23之間的任何整數。 day:表示日期,可以是從1到31之間的任何整數。 month:表示月份,可以是從1到12之間的任何整數。 week:表示星期幾,可以是從0到7之間的任何整數,這裡的0或7代表星期日。 command:要執行的命令,可以是系統命令,也可以是自己編寫的指令碼檔案。 在以上各個欄位中,還可以使用以下特殊字元: 星號(*):代表所有可能的值,例如month欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。 逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9” 中槓(-):可以用整數之間的中槓表示一個整數範圍,例如“2-6”表示“2,3,4,5,6” 正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute欄位,表示每十分鐘執行一次。 --- **每天早上6點執行gzip_log.sh 來壓縮log檔案** ```=\ 0 6 * * * /home/camiol/gzip_log.sh > /home/camiol/log 2>&1 ``` **log.sh的內容** ```=\ #!/bin/bash if [ -f '/opt/app/apache-tomcat-8.5.14/bin/log/camiol.log.'$(date --date='1 days ago' +%Y%m%d) ] then gzip /opt/app/apache-tomcat-8.5.14/bin/log/camiol.log.$(date --date='1 days ago' +%Y%m%d) cat /dev/null > /home/niaap/gziplog.out echo "ok" $(date +%Y%m%d) >> gziplog.out else echo "error" $(date +%Y%m%d) >> gziplog.out fi ``` **每天每隔20分鐘就執行housekeeping_catalina.sh來清理catalina.out** ```=\ */20 * * * * /home/camiol/housekeeping_catalina.sh > /dev/null 2>&1 ``` **housekeeping_catalina.sh的內容** ```=\ #!/bin/bash if [ -f "/opt/app/apache-tomcat-8.5.14/logs/catalina.out" ] then echo "Housekeeping catalina.out now~" cat /dev/null > /opt/app/apache-tomcat-8.5.14/logs/catalina.out else echo "catalina.out does not exist !!" fi ``` ###### tags: `Shell`