nginx日志定时切割

关于nginx日志定时切割、一般有两种方案,第一用logrotate,它是一个linux系统日志的管理工具、它可以切割、压缩等其他软件的日志文件软件;logrotate是基于crontab运行的,所以这个时间点是由crontab控制的,具体可以查询crontab的配置文件/etc/anacrontab。第二种用shell脚本定时切割。

第一种方案:logrotate

1、安装logrotate,我这里是centos直接用:yum -y install logroate

2、安装成功后、配置logrotate。/etc/logrotate.conf是logrotate的配置文件,打开该文件内容,显示如下:

标红处很关键,引入文件用的,所以我在该引入目录下新建了一个nginx文件,内容如下:

/var/log/nginx/access/*.log {
    #按天切割
    daily
    #在日志轮循期间,任何错误将被忽略
    missingok
    #一次存储30个日志文件。对于第31个日志文件,时间最久的那个日志文件将被删除。
    rotate 30
    #按日期格式显示切割后的文件名
    dateext
    dateformat _%Y-%m-%d
    #不采用压缩
    #compress
    #delaycompress
    #文件为空时不进行转存
    notifempty
    #以指定的权限和用书属性,创建全新的日志文件,同时logrotate也会重命名原始日志文件。
    create 755 web web
    sharedscripts
    postrotate
        kill -USR1 `ps aux | grep "nginx: master process" | grep -v grep | awk ‘{print $2}‘`
        sh /var/www/webroot/nginxlogrotate/access_log_archive.sh
    endscript
}

附日志归档脚本/var/www/webroot/nginxlogrotate/access_log_archive.sh内容:

#/bin/sh
lib_path="/var/log/nginx/archive/"
date_path="`date +%Y`/`date +%m`/`date +%d`"
path="${lib_path}${date_path}"
if [ ! -d "${path}" ]; then
    mkdir -p "${path}"
fi
chmod -R 777 ${path}
suffix_date=`date +%Y-%m-%d`
#日志列表
log_list=(ds img koubei shanghu static wl wx super m fc mantis)
#重命名日志文件
for i in ${log_list[@]};
do
    if [ -f "/var/log/nginx/access/${i}.log_${suffix_date}" ];then
        mv "/var/log/nginx/access/${i}.log_${suffix_date}" "${path}/${i}.log"
        rm -f "/var/log/nginx/access/${i}.log_${suffix_date}"
    fi
done

配置完成这些以后,还有一个很关键的配置文件,/etc/anacrontab,内容如下:

标红处我将定时任务运行的时候改为0=23点,然后自定义cron.daily的执行时间为每天的23:59,如此这般每天即可成功运行。

二、shell脚本

#!/bin/bash
#设置日志文件存放目录
log_path="/usr/local/nginx/log/"
#设置pid文件
pid_path="/usr/local/nginx/nginx.pid"
#日志列表
log_list=(ds img koubei shanghu static wl wx super m fc)
#重命名日志文件
for i in ${log_list[@]};
do
    #echo ${log_path}${i}_$(date -d "yesterday" +"%Y%m%d").log
    mv ${log_path}${i}.log ${log_path}${i}_$(date -d "yesterday" +"%Y%m%d").log
done
#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`

然后创建定时任务即可,定时任务可以参考我之前的文章 crontab妙用

时间: 2024-10-16 10:11:52

nginx日志定时切割的相关文章

nginx日志定时切割脚本

1 编写脚本cut_nginx_log.sh,放置在nginx/sbin/目录下,修改成可执行 #!/bin/bash # This script run at 00:00 #放置日志目录 logs_path="/var/www/logs" #nginx 目录 nginx_path="/var/www/nginx" #创建日期目录 mkdir -p ${logs_path}/$(date -d "yesterday" +"%Y.%m&q

tomcat,nginx日志定时清理

1. Crontab定时任务 Crontab 基本语法 t1 t2 t3 t4 t5 program 其中 t1 是表示分钟,t2 表示小时,t3 表示一个月份中的第几日,t4 表示月份,t5 表示一个星期中的第几天.program 表示要执行的程序. 当 t1 为 * 时表示每分钟都要执行 program,t2 为 * 时表示每小时都要执行程序,其馀类推 当 t1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,t2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推

Nginx 日志文件切割

Nginx 是一个非常轻量的 Web 服务器,体积小.性能高.速度快等诸多优点.但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将 导致日志文件容量非常大,不便于管理.当然了,我们也不希望看到这么庞大的一个访问日志文件,那需要手动对这个文件进行切割. 在 Linux 平台上 Shell 脚本丰富,使用 Shell 脚本加 crontab 命令能非常方便地进行切割,但在 Windows 平台上就麻烦一些了,刚才弄了好长时间,就在这里记录整理一下.

线上nginx日志无切割引起的祸

状况:lnmp环境下nginx反向代理服务器,部分网站无法访问,重启服务器后ok 拿到权限后安装zabbix监控,负载Ok , IO报警: Disk I/O is overloaded on xss152 使用命令工具查看io状况,top下78%wa........................ [[email protected] /]#  iostat -x 1 10  avg-cpu:  %user   %nice %system %iowait  %steal   %idle     

Nginx日志文件切割

Nginx 是一个非常轻量的 Web 服务器,体积小.性能高.速度快等诸多优点.但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将 导致日志文件容量非常大,不便于管理.当然了,我们也不希望看到这么庞大的一个访问日志文件,那需要手动对这个文件进行切割. 在 Linux 平台上 Shell 脚本丰富,使用 Shell 脚本加 crontab 命令能非常方便地进行切割 日志文件切割要求 由于 Nginx 的日志都是写在一个文件当中的,因此,我们需要每

nginx日志自动切割打包

[[email protected]_web ~]# cat /etc/logrotate.d/nginx /web/servers/tengine/logs/*.log { #日志所在的目录daily #日志文件按日轮询,还可以是 weekly monthly yearlydateext #让旧日志文件以创建日期命名compress #在轮询任务完成后,已轮询的归档以gzip进行压缩create 0644 dmadmin dmadmin #以指定的权限创建全新的日志文件,同时logrotate

Shell脚本实现 tomcat 日志定时切割

日志切割的意义: 在生产环境中,当我们使用tomcat服务时,如果用户量过多,有没有日志切割,将会产生很大的日志,一天的日志都能有好几个G大小.当我们需要查看日志记录时,非常麻烦.因此,日志切割是很有必要的! 1.编写shell脚本 vim fengelog.sh #脚本声明 #!/bin/bash . /etc/profile . ~/.bash_profile #定义日志文件目录 applog_path=/usr/local/apache-tomcat-app/logs sapplog_pa

Linux下添加shell脚本使得nginx日志每天定时切割压缩

Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常时查日志,还是使用"GoAccess"等工具对日志进行分析都将会变得非常麻烦.因此,每天定时对nginx日志进行切割压缩就非常有必要了 二 实现 我的实现思路是每天晚上接近12点时定时执行脚本.其脚本内容就是将当前的nginx日志先按照当天日期进行重命名接着进行压缩,最后是新建空白的ngi

Linux系统中nginx日志每天定时切割实现方法详解

本文和大家分享的是使用Linux中自带的命令logrotate对Nginx日志进行切割相关实现方法,希望帮助大家更好的学习linux系统. Nginx安装目录:/usr/local/nginx/ Nginx日志目录:/usr/local/nginx/logs/./usr/local/nginx/logs/nginx_logs/ 1.添加nginx日志切割脚本 cd /etc/logrotate.d #进入目录 vi /etc/logrotate.d/nginx #编辑脚本 /usr/local/