nginx 日志切割

Nginx   2025-01-12 15:19   247   0  

一、切割脚本

#!/bin/bash
set -x -e

#定时任务零点执行该脚本,比如"0 0 * * * /bin/bash /data/logs/nginx/nginx_log_cut.sh &> /dev/null"
#nginx日志文件所在的目录
NGINX_LOGS_DIR=/usr/local/nginx/logs
#日志保留天数,默认90天
LOGS_SAVE_DAYS=90

cd ${NGINX_LOGS_DIR}

[ -d bak ] || mkdir bak

NGINX_MASTER_PID=`ps -ef | grep nginx | grep master |awk '{print $2}'`
YESTERDAY=$(date +%Y-%m-%d -d "-1 day")

for log in $(ls *.log);
do
## 移动文件
mv ${log}  bak/${log}.${YESTERDAY}
done
## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件
kill -USR1 ${NGINX_MASTER_PID}

cd bak
tar -zcf nginx_${YESTERDAY}.log.tar.gz *.log.${YESTERDAY} --remove-files

#删除指定天数以前的日志
find . -name "*.log.tar.gz" -type f -mtime +${LOGS_SAVE_DAYS} -exec rm -rf {} \;

二、添加定时任务

echo -e "#每天凌晨00:00切割nginx日志\n0 0 * * * /bin/bash /usr/local/nginx/nginx_log_cut.sh &> /dev/null" >> /var/spool/cron/root


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。