linux 下使用crontab 定時打包日志並刪除已被打包的日志


crontab是和用戶相關的,每個用戶有自己對應的crontab 。

cron是Linux下的定時執行工具,以下是重啟/關閉等等的命令

#/sbin/service crond start    //啟動服務
#/sbin/service crond stop     //關閉服務
#/sbin/service crond restart  //重啟服務
#/sbin/service crond reload   //重新載入配置
#/sbin/service crond status  //查看服務狀態

 

cron服務提供 crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:

crontab -u     設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
crontab -l      
列出某個用戶cron服務的詳細內容
crontab -r     刪除某個用戶的cron服務
crontab -e    
編輯某個用戶的cron服務

設置定時的參數圖:

 

crontab特殊的符號說明:

  "*"  代表所有的取值范圍內的數字。特別要注意哦!
  "/"  代表每的意思,如"*/5"表示每5個單位
  "-"  代表從某個數字到某個數字
  ","  分散的數字

例如:

30 21 * * *          表示每晚的21:30 
45 4 1,10,22 * *       表示每月1、10、22日的4 : 45

 

現在是正式代碼, 壓縮上一個月的日志,並把其刪除

在logs文件夾的同級目錄下新建一個 .sh文件   例如:logzip.sh

內容:

        echo "Please wait..."  
        m=`date -d "1 months ago" +%Y-%m`    #獲取上個月的yyyy-mm格式的日期字符串
        m2=`date -d "1 months ago" +%Y%m`
        index=0
        f=`ls /home/hls/apache-tomcat-7.0.61/logs -1 -c`  #獲取logs下文件列表( /home/hls/apache-tomcat-7.0.61/logs 是日志的所在的路徑)
        for name in $f
        do
                n=`expr "$name" : '.*\([0-9]\{4\}-[0-9]\{2\}\).*'`    #從文件名稱中提取yyyy-mm格式日期
                if [ "$n" != "" ] && [ "$n" = "$m" ]
                then
                        f[$index]="/home/hls/apache-tomcat-7.0.61/logs/$name"    #logs文件夾下符合要求的文件名稱放入數組
                else
                        f[$index]=""
                fi
                (( index ++ ))
        done
        echo "$f"
        str=${f[@]}
        if [ "${#str}" -gt 0 ]       #如果大於 0
        then
        zip /home/hls/apache-tomcat-7.0.61/logs/$m2.zip  $str    #壓縮數組中的文件為yyyymm.zip文件,打包放在logs下
        else
        echo "No files found."
        exit 0
        fi
        echo "$m2.zip maked, now delete old files."
        rm -fr $str        #刪除已被打包文件
        echo "done."
        exit 0

 

使用方法:

執行 crontab -e 編輯當前用戶定時任務,進入編輯頁面,點擊 o  ,輸入

0 0 1 * * /home/hls/apache-tomcat-7.0.61/logzip.sh >> /home/hls/apache-tomcat-7.0.61/crontablog.log 2>&1

按esc退出編輯 然后 :wq 保存退出。這樣就在crontab里設置了定時任務(每月一號凌晨執行logzip.sh,並把執行文件中的日志輸出在crontablog.log中)

 

注意:windows下面創建的文件回車符和linux/unix下面的回車符不一樣,可能會導致腳本無法執行,

 

------------------------------------------------------阿紀--------------------------------------------------------------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM