shell 删除七日内日志_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

定时任务添加完成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值