实现Nginx的日志分割!

时间越久内存占用率越高,高并发量,会给服务器带来巨大的缓存压力

解决方法:创建一个新的目录,设置周期性计划定期的将旧目录里面的日志移动到新目录中,一般只保存30天内,30天后一律删除

[[email protected] ~]# date "+%Y%m%d"                                  //今天的时间
20190913
[[email protected] ~]# date -d "-1 day" "+%Y%m%d"                //昨天的时间
20190912

=====================================================================================

[[email protected] ~]# vim /opt/cut_nginx_log.sh

#!/bin/bash
#cut_nginx_log.sh

datetime=$(date -d "-1 day" "+%Y%m%d")        //时间,date -d "-1 day"代表日期减1
log_path="/usr/local/nginx/logs"             //日志的存放位置
pid_path="/usr/local/nginx/logs/nginx.pid"   //进程的PID号,有PID号代表 进程还活着
[ -d $log_path/backup ] || mkdir -p $log_path/backup   //如果$log_path/backup不是一个目录则创建$log_path/backup目录
if [ -f $pid_path ]                                //如果$pid_path是一个文件
then
mv $log_path/access.log $log_path/backup/access.log-$datetime  //那么移动旧日志的文件到新目录下以此来实现分割
kill -USR1 $(cat $pid_path)                                    //USR1代表信号,他会给进程传一个信号让进程生成一个新的日志
find $log_path/backup -mtime +30 | xargs rm -f                //查找30天前的日志并删除
else
echo "Error,Nginx is not working!" | tee -a /var/log/messages  //否则提示nginx is not working且追加到日志中
fi

[[email protected] ~]# chmod +x /opt/cut_nginx_log.sh
[[email protected] ~]# bash /opt/cut_nginx_log.sh
[[email protected] ~]# cd /usr/local/nginx/logs/
[[email protected] logs]# ls
access.log   backup  error.log  nginx.pid
[[email protected] logs]# ls backup/
access.log-20190912

[[email protected] ~]# crontab -e
crontab: installing new crontab
[[email protected] ~]# crontab -l
0    0   *    *    *     bash /opt/cut_nginx_log.sh            //每月每周每天的0时0分执行脚本

当未运行时!

[[email protected] logs]# killall -9 nginx
[[email protected] logs]# bash /opt/cut_nginx_log.sh
/opt/cut_nginx_log.sh: 第 11 行:kill: (8282) - 没有那个进程
[[email protected] logs]# rm -rf /usr/local/nginx/logs/nginx.pid
[[email protected] logs]# bash /opt/cut_nginx_log.sh
Error,Nginx is not working!

原文地址:https://www.cnblogs.com/cxm123123form/p/11516088.html

时间: 2024-10-10 22:45:20

实现Nginx的日志分割!的相关文章

Nginx优化——日志分割

日志分割 一.企业服务器中的日志文件过大会带来下面的问题:1.查询过大的日志文件对于开发和运维十分不方便,特别是加班人很累的情况下更加雪上加霜:2.很久以前的日志文件几乎没有价值,但是手工清理又太过繁琐.这时候就需要一种解决方案可以自动来做日志分割,分割后的日志不仅"干净",也便于实现日志定时清理. 实验 二.编译安装Nginx服务1.远程获取Windows上的源码包,并挂载到Linux上 [[email protected] ~]# smbclient -L //192.168.23

nginx 设置日志分割

server { listen       80; server_name  bmw2.thefront.com.cn; charset utf-8; if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") { set $year $1; set $month $2; set $day $3; } access_log  /home/weblogs/bmw2.thefront.com.cn.access.$year.$month.$day.log

linux nginx或tomcat 日志 分割

nginx的日志不是按照日期自动分割的,感觉以后会是一个问题,所以打算自己分割日志,在网上找了下,感觉都挺麻烦的,要分割日志,然后还要从启pid之类的,应该也好用吧,我没有试验.感觉太麻烦.自己按照想法写了一个.也挺好用的.供大家参考吧. #!/bin/bash # The Nginx logs path yesterday=`date -d "yesterday" +%Y%m%d` cp /home/log/nginx/logs/access.log /home/log/nginx/

nginx 日志分割(简单、全面)

Nginx 日志分割 因业务需要做了简单的Nginx 日志分割, 第1章 详细配置如下. #建议在mkdir  /home/shell  -p 专门写shell 脚本位置 [email protected]:/home/shell# cat nginxcut.sh #!/bin/sh ##### #by xuebao #2017.05.16 date=`date +%Y%m%d` nginxlog="/app/logs/nginx/" /bin/mv ${nginxlog}www_ac

nginx日志分割脚本

nginx 日志分割,可以分割一年内没有分割的日志,以每天一个日志文件打包 转载请注明出处:http://lm3810.blog.51cto.com/846925/1860543 #!/bin/bash #hls_nginx_log_cut.sh #by Louis 2016/10/10 logs_path='/data/store/logs/www/' #日志文件所在路径 files=`ls $logs_path` backup_path='/data/store/backuplogs/' #

nginx日志分割小脚本

nginx的日志一直是写在一个文件上面,运行久了之后文件会非常大,因此我们有必要对nginx的日志进行分割: 1 2 3 4 5 6 7 8 9 10 11 #! /bin/bash ACCESS_LOG=/data/nginx/www.log ERROR_LOG=/data/nginx/error.log YESTERDAY=$(date -d "yesterday" +%Y-%m-%d) #mv logs echo "move log files" mv ${A

nginx日志之错误日志及访问日志及日志分割

一.nginx错误日志 nginx软件会把自身运行的故障信息及用户访问的日志信息记录到指定的日志文件里 一般在nginx.conf配置文件第二行添加:error_log    logs/error.log    error : ↓                  ↓                  ↓ 关键字             日志文件       日志级别 其实如果不添加这行的话,默认就是这样 关于日志级别: 错误日志常见的级别有 :debug | info|notice | war

Nginx高性能服务器安装、配置、运维 (6) —— Nginx日志及日志分割

七.Nginx日志及日志分割 (1)Nginx日志文件 查看Nginx配置文件: 找到access_log,yum安装默认存储在/var/log/nginx目录下,且默认main格式: main格式定义: log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" '       '"$ht

nginx日志分割处理以及分析

在很多时候,我们会非常关注网站的访问量,比如网站的日PV是多少.网站某个功能上线之后点击量是多少,像这些东西都是需要从web容器中的访问日志统计出来的,下面我们看一下如何在nginx中统计网站的访问信息 1.设置Nginx访问日志记录格式 在默认情况下,nginx只是记录相关get信息,像post页面是不记录的,所以下面需要修改nginx.conf,让其访问日志记录post等请求信息,在nginx.conf中server段中加入如下信息 log_format  access  '$remote_