linux nginx日志太大做按天切分

场景:当nginx中的acces.log日志达到1G以上级别以上,会造成占用大量磁盘空间,造成必须要的浪费,当超过磁盘空间,会造成其他服务受到影响,导致不可用。

第一步:编写脚本
创建日志存放路径:mkdir /mnt/log/nginx_log
创建脚本存放路径: mkdir  /mnt/nginx_task_script
新增脚本:touch nginx_log_script.sh
下载地址

 

#/bin/bash

#Email:[email protected]
yesterday=$(date +%Y-%m-%d)  #取得服务器当前时间

savepath_log='/mnt/log/nginx_log/accesslogs'  #分割后的日志文件保存目录(注意结尾目录斜杠去掉)

nglogs='/usr/local/nginx/logs'  #nginx日志文件目录,具体根据实际地址替换(结尾目录斜杠去掉 以免与下面路径中的"/"重复)

#判断分割日志保存目录是否存在不存在则创建

if [ ! -d ${savepath_log} ]   # 注意 语句之间 空格不可省略,这是bash脚本 不是php脚本那样随和

then

mkdir -p ${savepath_log}

fi

#通过mv命令将日志移动到分割后的日志目录里,然后发送kill -USR1信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件。

mv ${nglogs}/access.log  ${savepath_log}/access_${yesterday}.log  #具体根据你的实际日志文件名路径 进行修改access.log名字

mv ${nglogs}/error.log  ${savepath_log}/error_${yesterday}.log  #具体根据实际日志文件名地址 修改error.log名字

#mv ${nglogs}/host.access.log  ${savepath_log}/host.access_${yesterday}.log
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)  #通知nginx重新生成新的日志


赋予脚本权限 :  chmod +r nginx_log_script.sh
如果想看到结果立马执行命令: sh nginx_log_script.sh

第二步:设置定时任务
crontab -e
新增记录:59 23 * * * /mnt/nginx_task_script/nginx_log_script.sh
当我们编辑完定时任务过后,记得重载一遍crond,只有重载了才有效
systemctl reload crond.service

重启crond服务:systemctl restart crond.service

结果如下:

猜你喜欢

转载自blog.csdn.net/qq_39291929/article/details/107676337