shell脚本保存七天日志

原因:存储日志过多,日志文件太大,撑爆了磁盘,导致虚拟机宕机
目的:保存规定时间内的日志,删除七天之外的日志
操作:获取存储目录下所有日志,保留最新七天日志,是用shell脚本删除超过七天的日志,然后再使用CentOS定时任务,删除文件

#!/bin/bash
#配置保存天数,默认7天
save_day=7

#当前时间
current_date=$(date -d "${save_day} day ago"  +%Y-%m-%d)
current_time=`date -d "${current_date}" +%s`

#日志文件根目录
folder="/home/iomslogs"

array=("erro" "debug" "info")
#获取所有的服务的日志文件目录
all_service_floder=$(ls ${folder})

for service in ${all_service_floder}
do
   service_logs="${folder}/${service}"
   logs=$(ls ${service_logs})
  
   for log in ${logs}
   do 
      log_path="${service_logs}/${log}"
      #日志目录上的时间
      log_date=${log##*.}
      if [[ ${log_date} =~ "log" ]];
      then
          continue;
      else
          #装换时间为秒
          log_time=`date -d "${log_date}" +%s`
          if [[ ${log} =~ ${array[0]} ]]; 
          then
               #删除这当前日期之前的目录
               if [[ ${current_time} -gt ${log_time} ]];
               then
                   #删除目录
                   rm ${log_path};
               else
                   #当前一周数据则保存
                   continue;
               fi

          elif [[ ${log} =~ ${array[1]} ]];
          then
               if [[ ${current_time} -gt ${log_time} ]];
               then
                   rm ${log_path};
               else
                   continue;
               fi

          elif [[ ${log} =~ ${array[2]} ]];
          then
               if [[ ${current_time} -gt ${log_time} ]];
               then
                   rm ${log_path};
               else
                   continue;
               fi
               echo "info"
           else
               echo "default"
          fi
      fi
   done
done

设置定时任务,每天凌晨删除七天之外的日志
七、安装crontabs
1、检查是否安装
执行

rpm -qa | grep cron

存在则已经安装成功,如不存在,则继续安装

启动服务
执行

service crond start

设置为开机自启动
执行

chkconfig crond on

3、将编写好的脚本clear_log.sh上传至指定的目录
使shell脚本拥有执行权限
执行

chmod +x clear_log.sh /home/IOMS/clear_log.sh

添加定时任务
执行:

crontab -e

设置每天凌晨0点执行一次
添加

0 0 * * * /home/IOMS/clear_log.sh

保存退出

重启服务
执行:service crond restart

定时任务添加完成

你可能感兴趣的:(linux)