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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术