支持配置的日志自动删除脚本

一个支持配置的日志定期自动删除脚本

bash

简介

  1. 脚本用于定期自动清理日志
  2. 脚本支持配置
  3. 启动方式:在脚本目录中使用nohup ./auto_clean.sh &启动
  4. 脚本参考自该博客

目录

1
2
3
4
auto_clean.sh           清理脚本
path_list.txt 配置文件
log.txt 日志文件
README.txt Readme文件

清理脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
#--------------------------------------------
# FileName: auto_clean.sh
# Date: 2017/10/12
# Author: ZXL
# Description: auto_clean for clean the logs automatically.
# Note: 用于日志定期自动删除
#--------------------------------------------

# auto_clean.sh 清理脚本
# path_list.txt 配置文件
# log.txt 日志文件
# README.txt Readme文件

###### 默认日志有效时间为30天 ######
while true;do
time=`date "+%y-%m-%d %H:%M:%S"`
echo "------start in $time------" >> ./log.txt

while read log_path exp_period;do
if [ ! $exp_period ];then
exp_period=+30
fi
logfiles=`find $log_path -maxdepth 1 -type f -mtime $exp_period`
#echo "log_path:$log_path"
#echo "exp_period:$exp_period"
#echo "logfiles:$logfiles"

for logfile in $logfiles;do
#echo "logfile:$logfile"
time=`date "+%y-%m-%d %H:%M:%S"`
echo "remove [$logfile] at [$time]" >> ./log.txt
rm -f $logfile >>./log.txt 2>&1
done
done < ./path_list.txt

time=`date "+%y-%m-%d %H:%M:%S"`
echo "------end in $time------" >> ./log.txt
###### 默认脚本运行周期为1天 ######
sleep 1d
done

配置文件

  • 配置文件按行读取,请勿一行多个同类型参数
  • 第一个参数为日志目录或者日志文件(支持通配符,如/opt/*.log)
  • 第二个参数为日志过期周期(如-10代表10天内的日志,+20代表20天之前的日志)
  • 两个参数见通过空格隔开,第二个参数非必要(不填默认为+30即30天之前的日志)
1
2
3
./nohup.out -10
/opt/logs/nginx/nginx.* +20
/usr/local/tomcat/logs/catalina.out.*

日志文件

1
2
3
4
5
------start in 17-10-12 17:18:19------
remove [./nohup.out] at [17-10-12 17:18:19]
remove [/opt/logs/nginx/nginx.access.log] at [17-10-12 17:18:19]
remove [/opt/logs/nginx/nginx.error.log] at [17-10-12 17:18:19]
------end in 17-10-12 17:18:19------

如果文章对您有帮助,感谢您的赞助支持!