Shell + crontab 实现日志压缩归档

Shell + crontab 实现日志压缩归档

 

crontab

1 # archive the ats log file, keep 7 days.
2 */5 * * * * root /bin/sh /path/archive_atslog.sh >/dev/null 2>&1

shell

 1 #!/bin/bash
 2 # Author      : standby
 3 # Date        : 2017-04-17
 4 # Description : Archive the live log, keep the lastest 7 days.
 5 
 6 logdir="/data/ats/logs"
 7 TODAY=`date -d "6 minutes ago" +%Y%m%d`
 8 
 9 function get_exter_ip()
10 {
11     arr=(`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`)
12     exter_ip=${arr[0]}
13     for ip in ${arr[*]}
14     do
15         ip_tmp=`echo $ip | grep -v '^10\.'`
16         if [[ ! -z $ip_tmp ]];then
17             break
18         fi
19     done
20     exter_ip=$ip_tmp
21     echo $exter_ip
22 }
23 IP=`get_exter_ip`
24 # rename log file
25 cd $logdir
26 for i in `ls access.log_*.old`
27 do
28     DATE=`echo $i |awk -F "[-.]" '{print $(NF-4)$(NF-3)}' |sed 's/[hms]//g'`
29     mv $i live_${IP}_${DATE}_05min.log
30 done
31 
32 subPath=$logdir/$TODAY/
33 # gzip and archive log file
34 [ ! -d $subPath ] && mkdir -p $subPath
35 for i in `ls live_*.*_05min.log`
36 do
37     gzip $i
38     mv $i".gz" $subPath
39 done
40 
41 # clean log files which 7 days ago
42 i=0
43 while [[ i -lt 7 ]]
44 do
45     weekDay[i]=`date -d "-${i} day" +"%Y%m%d"`
46     let i++
47 done
48 for dir in `ls | grep -E "([0-9]{8})"`
49 do
50     [[ "${weekDay[@]}" =~ $dir ]] || rm -rf $dir
51 done

 

转载于:https://www.cnblogs.com/standby/p/6791756.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值