Nginx日志切割和定时清理

本文介绍了如何使用shell脚本实现Nginx日志的每日切割和打包,确保日志文件不会过大。脚本在每天凌晨0点执行,将前一天的日志重命名并压缩为tar.gz文件,同时删除7天前的旧备份,以保持日志存储的整洁和高效。此外,还提供了一个定时任务Cron表达式来自动化这个过程。
摘要由CSDN通过智能技术生成

Nginx日志切割

Nginx日志随着日期越来越大,需要对日志进行定期切割清理。

切割策略

每天凌晨0点,执行定时任务打包nginx日志并生成新的nginx日志文件。
备份脚本:

确定日志文件名称
#!/bin/bash
# cut nginx log of yesterday
source /etc/profile

log_path="/usr/local/nginx/logs/"

yesterday=$(date -d "yesterday" +"%Y%m%d")
 
mv ${log_path}error.log ${log_path}error.$yesterday.log

mv ${log_path}access.log ${log_path}access.$yesterday.log

/usr/local/nginx/sbin/nginx -s reload

cd $log_path

# 打包日志文件
tar -zcvf error.$yesterday.tar.gz error.$yesterday.log
tar -zcvf access.$yesterday.tar.gz access.$yesterday.log

# 删除打包的源文件
rm -rf error.$yesterday.log
rm -rf access.$yesterday.log

### 不确定日志文件名

```bash
#!/bin/bash
# cut nginx log of yesterday

source /etc/profile

log_path="/usr/local/nginx/logs"

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

seven_day_ago=$(date -d "7 days ago" "+%Y-%m-%d")

for file in $log_path/*.log; do
  mv "$file" "${file%.log}.${yesterday}.log"
done

/usr/local/nginx/sbin/nginx -s reload

for file in $log_path/*${yesterday}.log; do
  tar -zcvPf "${file%.log}.tar.gz" "$file"
  rm -rf "$file"
done

echo "remove ${log_path}/*.${seven_day_ago}.tar.gz"
#删除前边第7天的日志
rm -rf ${log_path}/*.${seven_day_ago}.tar.gz

## 删除策略
每天凌晨0点,定时删除历史超过7天的备份日志文件。
删除脚本:
```bash
#!/bin/bash

# del history nginx log

cd /usr/local/nginx/shell

find /usr/local/nginx/logs/ -mtime +7 -type f -name  '*.tar.gz' | xargs rm -f

/usr/local/nginx/sbin/nginx -s reload

定时任务

Cron表达式

minute hour day-of-month month day-of-week command

利用crontab -e 添加要执行的定时任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值