linux系统下Nginx 日志切割的例子

  默认情况下,Nginx 的访问日志保存在一个文件里。时间久了日志内容变得异常庞大。不利于日志文件的归档备份及分析。可以通过每天定时执行脚本来达到自动切割日志的目的,达到每天的访问日志保存在一个单独文件内。
 
为了切割日志,首先需要将已存在的日志重命名(默认访问日志为 access.log ,重命名为当天的日期),然后向 Nginx 的 master 进程发送 USR1 信号来使进程重新打开所有日志文件并设置日志文件的属主为 work 进程运行的用户,(此时由于 access.log 已被重命名 所以进程会新创建一个 access.log 并将属主改为 work 进程运行的用户,来记录新的访问日志)。当日志文件重新打开成功后,master 会关闭所有打开的日志文件,并通知 work 进程重新打开日志文件。work 进程以正确的方式关闭之前的日志文件,并使用新的日志文件记录。
 
未进行切割之前:
 [root@lnmp www]# du -h access.log
12M     access.log
[root@lnmp www]# head -n 1 access.log
120.27.47.* - - [25/Sep/2015:10:35:31 +0800] "HEAD / HTTP/1.1" 200 0 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)" "-"
[root@lnmp www]# tail -n 1 access.log      
112.126.75.* - - [29/Sep/2015:12:06:54 +0800] "HEAD / HTTP/1.1" 200 0 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)" "-"
[root@lnmp www]#
 
使用脚本重命名日志文件,并发送 USR1 信号给 Nginx master 进程。然后将脚本加入定时任务:
 
Nginx master 进程号文件保存位置:
 [root@lnmp scripts]# grep pid /application/nginx/conf/nginx.conf
pid        logs/nginx.pid;
[root@lnmp scripts]# cat /application/nginx/logs/nginx.pid
7039
[root@lnmp scripts]#
 
配置文件中访问日志保存路径及文件名:
 [root@lnmp scripts]# grep access /application/nginx/conf/website/www.conf
    access_log /data/logs/website/www/access.log  main;
[root@lnmp scripts]
 
脚本:
 [root@lnmp scripts]# cat rotate-nginx-logs.sh
#!/bin/bash
# Rotate nginx logs
# Nginx pid file : /application/nginx/logs/nginx.pid
# Nginx logs directory : /data/logs/website/www
# Default log name : access.log
# Author : Mr.Zhou

NGX_PID=/application/nginx/logs/nginx.pid
LOGS_DIR=/data/logs/website/www
LOG_NAME=access.log

cd $LOGS_DIR &&
/usr/bin/rename $LOG_NAME $(/bin/date +%F -d 'yesterday').$LOG_NAME $LOG_NAME &&
/bin/kill -USR1 $(cat $NGX_PID)
[root@lnmp scripts]#
 
将脚本加入到定时任务,每天零点执行:
 [root@lnmp scripts]# crontab -l
# rotate nginx log everyday
00 00 * * * /bin/bash /application/scripts/rotate-nginx-logs.sh &>/dev/null
[root@lnmp scripts]#
 
定时任务自动执行切割脚本后:
 [root@lnmp www]# ls
2015-09-29.access.log  access.log
[root@lnmp www]# tail -n 1 2015-09-29.access.log
112.126.75.174 - - [29/Sep/2015:23:59:54 +0800] "HEAD / HTTP/1.1" 200 0 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)" "-"
[root@lnmp www]# head -n 1 access.log               
45.119.97.12 - - [30/Sep/2015:00:00:31 +0800] "POST /wp-cron.php?doing_wp_cron=1443542431.7503929138183593750000 HTTP/1.0" 200 0 "-" "WordPress/4.3.1; http://www.111cn.net" "-"
[root@lnmp www]#

时间: 2024-10-07 10:11:48

linux系统下Nginx 日志切割的例子的相关文章

Linux系统下nginx日志每天定时切割的脚本写法_nginx

使用Linux系统自带的命令logrotate对Nginx日志进行切割. 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/nginx/logs/*.log /usr/local/nginx

Linux系统下查看日志的命令

日志文件说明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信息 /var/log/cron 与定时任务相关的日志信息 /var/log/spooler 与UUCP和news设备相关的日志信息 /var/log/boot.log 守护进程启动和停止相关的日志消息 系统 # uname -a # 查看内核/操作系统/CPU信息 # 

Linux下nginx日志每天定时切割实例

教程目的:   使用Linux系统自带的命令logrotate对Nginx日志进行切割.   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/nginx/lo

linux中NGINX日志切割和定时删除旧日志例子

  在nginx日志切割方面,我的方法和其他人用的方法有一些不一样,但对于我这种方法,如果有人觉得不好,可以给我提出,谢谢 nginx日志切割,我是直接写的一个简单的shell实现的,内容如下:  代码如下 复制代码 mv /usr/local/nginx/logs/abc.log /www/logbak/abc`date +%Y%m%d%H%M`.log /usr/local/nginx/sbin/nginx -s reload 这样执行以后,就会在/www/logbak目录下生成日志文件,你

nginx日志切割的几个例子

例子1 1. 定义日志轮滚策略 # vim nginx-log-rotate /data/weblogs/*.log {     nocompress     daily     copytruncate     create     notifempty     rotate 7     olddir /data/weblogs/old_log     missingok     dateext     postrotate         /bin/kill -HUP `cat /var/r

日志-linux系统下有Sense Key:recovered error [current]错误

问题描述 linux系统下有Sense Key:recovered error [current]错误 日志里有大量如图报警,不知道是什么原因引起的,查了ASC和ASCP也没有什么结果,拜托有知道的大神,给小弟指条明路 解决方案 看看是不是硬盘有坏道,或者文件破坏 参考:http://blog.itpub.net/25362835/viewspace-1058637/ 解决方案二: http://bbs.chinaunix.net/thread-4086486-1-1.html

linux系统下 tomcat进程无辜消失 日志无任何异常

问题描述 linux系统下,tomcat进程消失日志没有任何异常,只是tomcat进程没了,谁知道这是什么原因? 解决方案

在linux系统下安装两个nginx的简单方法_Linux

在linux下安装nginx的时候,一般在./configure的阶段会要求通过prefix设置安装路径.因此,在./configure的时候指定不同的prefix就可以安装多个nginx啦. 值得注意的是,安装完之后,两个nginx的监听端口要设置成不同的监听端口.否则,会有一个nginx无法启动. ./configure --prefix=/home/work/nginx1 .....//第一个nginx的安装配置 make && make install ./configure --

Linux系统下配置软RAID及维护的例子

Linux系统下配置软RAID 一.设置磁盘 这里我们以Raid 1为例,其他的Raid级别设置类似.Riad 1需要两块硬盘,我在vps里添加了2块80G的硬盘.系统里使用fdisk –l 命令查看 二.安装mdadm mdadm 是multiple devices admin 的简称,它是Linux下的一款标准的软件RAID 管理工具. 1.先查看是否安装了mdadm软件 # rpm -qa|grep mdadm 2.如果未安装,则使用yum 方式安装. # yum install mdad