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

更新时间:2020-05-03    来源:php安装    手机版     字体:

【www.bbyears.com--php安装】

  默认情况下,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]#

本文来源:http://www.bbyears.com/jiaocheng/93318.html

热门标签

更多>>

本类排行