随笔 - 88  文章 - 0  评论 - 0  阅读 - 64953

nginx 按日期生成log

第一种方法:移走原来的日志文件。

vi rizhi.sh

#!/bin/bash
#获取昨天的日期
date=$(date +%F -d -1day)
#进入 Nginx 日志目录
cd /usr/local/nginx/logs
#创建备份目录(如果不存在)
if [ ! -d bak ] ; then
mkdir -p bak
fi
#移动日志文件到备份目录并重命名
mv access.log bak/access_$date.log
mv error.log bak/error_$date.log
#重新加载 Nginx 配置
# /usr/bin/nginx -s reload
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
#压缩归档日志文件
tar -jcvf bak/$date.tar.gz bak/access_$date.log bak/error_$date.log
#删除超过30天的压缩日志文件
find /usr/local/nginx/logs/bak -mtime +30 -name "*.gz" -exec rm -rf {} \;
#删除超过1天的未压缩日志文件
find /usr/local/nginx/logs/bak -mtime +1 -name "*.log" -exec rm -rf {} \;

 

添加执行权限

sudo chmod +x /usr/local/bin/rizhi.sh

设置计划任务

0 2 * * * /usr/local/bin/rizhi.sh >> /var/log/rizhi.log 2>&1

 

第二种方法,不移走日志文件,拷贝曾经的日志文件。

vi /usr/local/bin/nginx_log_rotate.sh

#!/bin/bash

# 定义日志文件路径
ACCESS_LOG="/var/log/nginx/access.log"
ERROR_LOG="/var/log/nginx/error.log"

# 定义备份目录
BACKUP_DIR="/var/log/nginx/backup"

# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR

# 获取当前日期时间
TIMESTAMP=$(date +'%Y-%m-%d_%H-%M-%S')

# 备份并清空日志文件
cp $ACCESS_LOG $BACKUP_DIR/access.log.$TIMESTAMP
cp $ERROR_LOG $BACKUP_DIR/error.log.$TIMESTAMP

# 清空原日志文件
: > $ACCESS_LOG
: > $ERROR_LOG

# 通知 Nginx 重新打开日志文件
if [ -f /var/run/nginx.pid ]; then
kill -USR1 $(cat /var/run/nginx.pid)
fi

添加执行权限

sudo chmod +x /usr/local/bin/nginx_log_rotate.sh

设置计划任务

0 2 * * * /usr/local/bin/nginx_log_rotate.sh >> /var/log/nginx_log_rotate.log 2>&1

posted on   北橘  阅读(277)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

点击右上角即可分享
微信分享提示