shell 删除七日内日志_nginx日志切割及删除7天前的历史日志shell脚本

日志切割对于WEB环境我们都会做一个日志记录了,在此一聚教程小编来为各位介绍nginx日志切割及删除7天前的历史日志shell脚本,这里有几个例子,我们一起来看看吧。

例子一、按日期切割nginx日志,并自动删除7天前的日志(日志均已同步至专用日志存储服务器,可放心删除历史日志。)

#!/bin/bash

#初始化

LOGS_PATH=/data/nginx/logs/www.domain.com

YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)

#按天切割日志

mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log

#向 Nginx 主进程发送 USR1 信号,重新打开日志文件,否则会继续往mv后的文件写内容,导致切割失败.

kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`

#删除7天前的日志

cd ${LOGS_PATH}

find . -ctime +7 -name "*20[1-9][3-9]*" | xargs rm -f

exit 0

将这个脚本添加到计划任务,每天执行一次即可:

1 0 * * * /usr/local/script/cut_del_logs.sh

此方法,网上一搜一大把,因此本文仅作为个人工作记录,并非教程,随便看看就行,别太在意。

例子2、按天分类存储并删除超过7天的日志

脚本内容:

#!/bin/bash

# a nginx access log segmentation shell script

cd /data/wslogs

log_dir="/data/wslogs"

time=`date +%Y%m%d`

nginx_dir="/usr/local/webserver/nginx"

#日志分割,按天分类

website=`ls $log_dir/access* | xargs -n 1 | cut -f 2 -d "."`

for i in $website

do

mkdir -p $log_dir/backup/$time/$i

mv $log_dir/access.$i.log $log_dir/backup/$time/$i/$time.log

done

$nginx_dir/sbin/nginx -s reload

#删除所有超过7天日志。

if [ "`date +%a`" = "Sun" ]; then

all_list=`ls $log_dir/backup | xargs -n 1`

for del in $all_list

do

let results=$time-$del

if [ $results -gt 7 ]; then

rm -fr $log_dir/backup/$del

fi

done

fi

需要注意的是:因为个人需要,Nginx访问日志命名格式必须是access.域名.log,例如:access.www_1987_com.log,域名中原来的点.必须换成其他字符,比如下划线_

代码中的一些位置参数可以根据自己需要修改,修改/etc/crontab文件,加入00 00 * * * root /data/logcron.sh,每天零点执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值