linux下nginx日志按天分割

背景

nginx的日志文件没有rotate功能。一段时间过后,日志将越发臃肿,一个accesslog很快就突破2.5G,因此有必要通过脚本实现按天切割日志。

1、将日志文件备份到/usr/local/nginx/logs/historyLog目录下,备份的文件名称是access_yyyyMMdd.log和error_yyyyMMdd.log。

1.创建nginx_logs.sh文件,并授予执行权限。

chmod  +x  nginx_logs.sh

2.备份脚本

#!/bin/bash
# This script run at 00:00

# The Nginx logs path
logs_path="/usr/local/nginx/logs/historyLog/"

logPath="/usr/local/nginx/logs/"
#创建备份目录  如2020/03
mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
#将日志移动到上面的目录中
mv ${logPath}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
mv ${logPath}error.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/error_$(date -d "yesterday" +"%Y%m%d").log
#主要用到nginx的-usr1信号,usr1 : reopen the log files 向nginx主进程发送信号以重新打开日志
kill -USR1 `cat ${logs_path}nginx.pid`

3.创建日志备份的目录,切换到/usr/local/nginx/logs下

mkdir historyLog

2、通过crontab命令设置,秒 分 时 日 月 周

1、设置定时任务 "crontab -e"

#将于每天凌晨0点0分将nginx日志重命名为昨天的日期格式,并重新生成今天的新日志
0 0 * * * bash /usr/local/nginx/logs/nginx_logs.sh

2.先手动执行nginx_logs.sh

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liangshitian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值