Nginx日志清理脚本

Nginx日志清理脚本


一、适用环境

使用Bash为默认shel且符合LSB标准的Linux系统。

二、脚本功能

  • 配合crontab任务,此脚本可实现定期清理nginx日志的功能。

  • 例如:当设定定时清理时间为30天,且配置crontab任务为如下时。此脚本可实现每天1:00清理30天前的nginx日志。

    0 1 * * * /home/suifenpx/nginx_log_clear.sh
    

三、使用方法

  • 修改nginx_access_log变量的值为Nginx的access日志的路径。
  • 修改nginx_error_log变量的值为Nginx的error日志的路径。
  • 修改clear_date变量的值为清理日志的时间限制(例如:当值为30时,表示清理30天前的日志)。

四、脚本

#!/bin/bash

:<<!
    功能:Ningx日志清理
    版本:0.4a
    注意:使用前需修改如下变量的值:
        1、修改nginx_access_log变量的值为Nginx的access日志的路径。
        2、修改nginx_error_log变量的值为Nginx的error日志的路径。
        3、修改clear_date变量的值为清理日志的时间限制(例如:当值为30时,表示清理30天前的日志)。
    作者:SuiFenPX
    邮件:suifenpx@qq.com
    日期:2020-12-29
!

nginx_access_log=/home/suifenpx/access.log
nginx_error_log=/home/suifenpx/error.log
clear_date=30

last_month_4a=`date -d "-\$clear_date days" +%d\\\/%b\\\/%Y`
last_month_4e=`date -d "-\$clear_date days" +%Y\\\/%m\\\/%d`
tmp_file_4a=$nginx_access_log.tmp
tmp_file_4e=$nginx_error_log.tmp
now_date=`date +"%Y-%m-%d %H:%M:%S"`

function clear_access_log() {
    sed -n "/$last_month_4a/,\$p" $nginx_access_log > $tmp_file_4a
    cat $tmp_file_4a > $nginx_access_log
    rm -rf $tmp_file_4a
    echo -e "$now_date [SUCCESS] $clear_date天前的Nginx access日志已清理!"
}

function clear_error_log() {
    sed -n "/$last_month_4e/,\$p" $nginx_error_log > $tmp_file_4e
    cat $tmp_file_4e > $nginx_error_log
    rm -rf $tmp_file_4e
    echo -e "$now_date [SUCCESS] $clear_date天前的Nginx error日志已清理!"
}

if [ -e $nginx_access_log ] && [ -e $nginx_error_log ];then
    clear_access_log
    clear_error_log
    exit
elif [ -e $nginx_access_log ] && [ ! -e $nginx_error_log ];then
    clear_access_log
    echo -e "$now_date [ERROR] 未找到$nginx_error_log文件!"
    exit
elif [ ! -e $nginx_access_log ] && [ -e $nginx_error_log ];then
    clear_error_log
    echo -e "$now_date [ERROR] 未找到$nginx_access_log文件!"
    exit
elif [ ! -e $nginx_access_log ] && [ ! -e $nginx_error_log ];then
    echo -e "$now_date [ERROR] 未找到$nginx_access_log文件!"
    echo -e "$now_date [ERROR] 未找到$nginx_error_log文件!"
    exit
fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值