前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生产环境日志清理脚本

生产环境日志清理脚本

作者头像
loong576
发布2020-07-20 23:17:14
1.1K0
发布2020-07-20 23:17:14
举报
文章被收录于专栏:运维ABC运维ABC

一、需求

生产上有40多个微服务部署的应用,每个应用都会产生日志,随着时间的增长,日志量不断增大,现需要清理。有两个重要的应用日志需保留90天,其它应用保留20天。

二、模拟产生日志文件

代码语言:javascript
复制
[root@ansible-awx ~]# more file_create.sh 
#/bin/bash
for k in {1..10}
do
  mkdir -p /tmp/file_log/log_dir"$k"
  for i in {03..06}
  do
    for j in {01..30}
    do 
      touch -mt 2020"$i""$j"0000 /tmp/file_log/log_dir"$k"/file_log_2020-"$i"-"$j".log
    done
  done
done

在/tmp/file_log目录新建log_dir1--log_dir10共10个目录,每个目录下生成3月到6月的日志文件;日志的创建时间和文件名时间后缀相同。

image-20200717175029076
image-20200717175029076

文件生成时间模拟生产日志文件时间。

三、清理脚本

代码语言:javascript
复制
#!/bin/bash

Days1=20
Days2=90

log_directory1=/tmp/file_log
log_directory2=/tmp/file_log/log_dir1
log_directory3=/tmp/file_log/log_dir2

#删除除log_dir1和log_dir2的日志,保留期限为Days1
find $log_directory1 \( -path $log_directory2 -o -path $log_directory3 \)  -prune -o -type f -mtime +$Days1  -exec rm {} \;

#删除log_dir1和log_dir2的日志,保留期限为Days2
find $log_directory2 -type f -mtime +$Days2 -exec rm {} \;
find $log_directory3 -type f -mtime +$Days2 -exec rm {} \;

清理脚本原理:使用find查找指定目录($log_directory)下所有日志文件(-type f),有时会去除不需要的目录"\( -path \$log_directory2 -o -path \$log_directory3 \)",再按照文件生成日期和时间参数(-mtime \$Day)来清除(exec rm {} \)

image-20200717175539948
image-20200717175539948

清理脚本执行前每个日志目录log_dir有121个日志文件,执行完清理脚本后对应的减少。

四、定时任务

将脚本部署为定时任务,每天零点定时执行:

代码语言:javascript
复制
[root@ansible-awx ~]# crontab -l
0 0 * * * /root/file_cleanup.sh >/dev/null 2>&1

本文所有脚本已上传github

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、需求
  • 二、模拟产生日志文件
  • 三、清理脚本
  • 四、定时任务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com