Nginx日志切割脚本

#!/bin/bash
#nginx日志目录
s_log_dir="/apps/nginx/logs"
#nginx日志文件
s_log="${s_log_dir}/access.log"
#切割日志存放目录
d_log_dir="/data/logs/nginx"
#切割日志名称,按日期命令
d_log="${d_log_dir}/access`date -d yesterday +%F`.log"
#nginx进程号
PID=`cat /apps/nginx/logs/nginx.pid`
#判断切割日志存放目录是否存在,不存在则创建
if [ ! -d ${d_log_dir} ];then
mkdir -p ${d_log_dir}
fi
#判断原日志文件是否存在,存在则移动并改名
if [ -f ${s_log} ];then
mv ${s_log} ${d_log}
fi
#nginx进程读写日志文件时,是通过文件描述符去操作的,虽然修改了原"access.log"文件的文件名
#但是原文件描述符与文件本身的对应关系仍然存在,所以重命名后,需要让nginx重新打开一个新文件
#以便将新的日志写入到新文件中。
#/usr/local/nginx/sbin/nginx -s reopen
kill -USR1 ${PID}
if [ $? -eq 0 ];then
echo "`date -d yesterday +%F` 日志切割成功"
fi
exit 0

添加任务计划,每天00:00自动执行

在/var/spool/cron/root文件中添加如下代码,每天00:00自动切割日志:
0 0 * * * /bin/bash /opt/nginx_cut_log.sh 2>&1 >>/tmp/nginx_cut.log
posted @   areke  阅读(601)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略
点击右上角即可分享
微信分享提示