14. Shell 实战-定时清理日志

版权声明:您的关注和评论, 是笔者持续创作最大的动力^_^ https://blog.csdn.net/zongf0504/article/details/90020982

在生产环境中, 应用日志数量是比较庞大的,通常我们会根据日志文件的时间进行归档或清理。 笔者写了一个简单的根据日志创建天数来清理日志的脚本. 可以在此基础上进行扩展,根据文件名, 创建时间, 最后修改时间等综合判断.

1. 脚本

脚本名称: clean-log, 接收两个参数:

  • 第一个参数: 日志目录
  • 第二个参数: 天数, 清理多少天之前的日志
#!/bin/bash
#Desc 清理过期日志
#Auth zongf
#Date 2018-11-06

# 日志目录
log_dir=$1
# 超过多少天的日志会被清理
old_days=$2

# 当前时间(秒)
time_now=`date +"%s"`

# 期限
limit=$((3600*24*$old_days))

# 获取所有文件
files=`ls $log_dir`

for file in $files
do
    time_chg=`stat -c %Y $log_dir/$file`
    time_btn=$(($time_now - $time_chg))

    if [ $time_btn -lt $limit ]; then
        echo "$log_dir/$file"
    fi
done

2. 执行

通常会将clean-log这种清理日志的脚本设置为定时任务, 可以借助于Linux 自带的cron 或配合jenkins 等工具使用.

# 清理/opt/logs 目录下超过90的日志文件
./clean-log  /opt/logs  90

猜你喜欢

转载自blog.csdn.net/zongf0504/article/details/90020982