生产环境日志清理脚本
时间:2022-07-22
本文章向大家介绍生产环境日志清理脚本,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、需求
生产上有40多个微服务部署的应用,每个应用都会产生日志,随着时间的增长,日志量不断增大,现需要清理。有两个重要的应用日志需保留90天,其它应用保留20天。
二、模拟产生日志文件
[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月的日志文件;日志的创建时间和文件名时间后缀相同。
文件生成时间模拟生产日志文件时间。
三、清理脚本
#!/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 {} )
清理脚本执行前每个日志目录log_dir有121个日志文件,执行完清理脚本后对应的减少。
四、定时任务
将脚本部署为定时任务,每天零点定时执行:
[root@ansible-awx ~]# crontab -l
0 0 * * * /root/file_cleanup.sh >/dev/null 2>&1
本文所有脚本已上传github
- StreamInsight 基本概念
- git 常用命令
- Windows系统性能分析
- 在Android中调用WebService
- SQL:数据与运算的融合体
- Windows Server AppFabric Caching支持大数据量的配置
- Python函数之匿名函数
- 配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2
- ASP.NET BBcode
- JavaScript 常用算法
- SVG 使用
- 小程能走网店模式?如何做分销模式的小程序?
- IIS 6 下配置以 FastCGI 跑 PHP
- IIS 7.x Application Request Routing(ARR) 502错误的解决方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 《深入浅出SQL》问答录(二)
- 《深入浅出SQL》问答录(四)
- 《深入浅出MySQL》问答录(五)
- 《深入浅出SQL》问答录(七)
- 《深入浅出SQL》问答录(八)
- Improvise_a_Jazz_Solo_with_an_LSTM_Network_v3a-2
- 《深入浅出SQL》问答录(九)
- 《深入浅出SQL》问答录(十)
- Operations_on_word_vectors_v2a
- LeetCode精选好题(一)
- LeetCode精选好题(二)
- 【leetcode两题选手】算法类题目(7.26)
- MySQL见闻录 -- 入门之旅(一)
- MySQL见闻录 -- 入门之旅(二)
- MySQL见闻录 - 入门之旅(三)