原因:存储日志过多,日志文件太大,撑爆了磁盘,导致虚拟机宕机
目的:保存规定时间内的日志,删除七天之外的日志
操作:获取存储目录下所有日志,保留最新七天日志,是用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
定时任务添加完成