nginx实现按日期进行日志分割

1:nginx的访问日志按日期分割,也就是每天的零点把前一天的访问日志以日期的形式备份,然后重新打开一份访问日志,这里的kill -USR1 $pid 重新打开访问日志,必须得把原来的mv,如果存在的话,还是在原来的基础上累加。

脚本:

#!/bin/bash

local_path=/usr/local/nginx/logs

cd $local_path

if [ !-d date_log ] ;then
    mkdir date_log
fi

mv access_nginx.log $local_path/date_log/access_`date -d "yesterday" +%Y%m%d`
nginx_pid=`ps -ef |grep -v grep |grep "nginx: master process"|awk -F" " ‘{print $2}‘`
`sudo kill -USR1 $nginx_pid`

然后把脚本加入定时任务:

55 11 * * * /bin/bash /home/yangyifeng/nginx_log.sh &>/home/yangyifeng/nginx_log.log

这里直接这样会报错:

解决办法:

在vim /etc/sudoers,把执行定时任务的用户修改一下,表示某某用户不需要终端控制

有关USR1的介绍:

维基百科:https://zh.wikipedia.org/wiki/SIGUSR1%E5%92%8CSIGUSR2

USR:是User-defined的缩写,即用户定义的

USR1通常被用来告知应用程序重载配置文件,如:向Apache HTTP服务器发送一个USR1信号,将导致如下步骤:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改

中文官网:http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/stopping.html

时间: 2024-10-12 03:36:32

nginx实现按日期进行日志分割的相关文章

nginx/Windows-1.9.0的日志分割

@echo offrem @echo off rem 取1天之前的日期echo wscript.echo dateadd("d",-1,date) >%tmp%\tmp.vbs for /f "tokens=1,2,3* delims=/" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%ifor /f "tokens=1,2,3* delims=/" %%i in ('cscript

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

Nginx优化——日志分割

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

Nginx之隐藏版本号,优化缓存,日志分割

nginx之隐藏版本号 配置nginx [[email protected] ~]# yum install pcre-devel zlib-devel gcc gcc-c++ -y ##安装环境包 [[email protected] ~]# useradd -M -s /sbin/nologin nginx ##创建程序性用户 [[email protected] ~]# mkdir /chen ##创建挂载点 [[email protected] ~]# mount.cifs //192.

[Java][log4j]支持同时按日期和文件大小分割日志

根据DailyRollingFileAppender和RollingFileAppender改编,支持按日期和文件大小分割日志. 源文件: Java代码   package com.bao.logging; import java.io.File; import java.io.IOException; import java.io.Writer; import java.text.SimpleDateFormat; import java.util.Calendar; import java.

nginx 直接在配置文章中设置日志分割

直接在nginx配置文件中,配置日志循环,而不需使用logrotate或配置cron任务.需要使用到$time_iso8601 内嵌变量来获取时间.$time_iso8601格式如下:2015-08-07T18:12:02+02:00.然后使用正则表达式来获取所需时间的数据. 按天分割日志 使用下面的代码块 if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") { set $year $1; set $month $2; set $day $3

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的日志一直是写在一个文件上面,运行久了之后文件会非常大,因此我们有必要对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