Nginx日志每天自动切割保存

一般网站的访问日志和错误日志都是打开的,但是nginx的日志都是单个文件,时间长了,文件难免会变得太大,而且会影响服务器性能,因此有必要对nginx日志进行每日切割保存,减小文件大小,同时也更方便查看日志。

实现思路

shell脚本+定时任务+nginx信号控制,完成日志定时切割

具体步骤

在需要保存日志或者是其他目录,新建一个shell脚本。一般shell脚本都是.sh来标识:

1、创建一个文件"touch /root/nginx/logs/savelog.sh",然后使用vim编辑该文件,编辑内容如下:

    #标名这个脚本是使用bin目录下bash去执行
    #!/bin/bash
    #安装目录下日志文件
    base_log_path='/www/wwwlogs/xxx.log'
    base_error_path='/www/wwwlogs/xxx.error.log'
    
    #需要保存的目录位置
    log_path='/www/wwwlogs/xxx/'
    
    #获取月份
    log_month=$(date -d yesterday +"%Y%m")
    
    #获取前一天日期 (第二天凌晨备份,即保存的日志就是当天时间的日志)
    log_day=$(date -d yesterday +"%d")

    #在指定位置创建文件夹
    mkdir -p $log_path/$log_month

    #将安装目录下的日志文件,移动到指定存储位置
    mv $base_log_path $log_path/$log_month/access_$log_day.log
    mv $base_error_path $log_path/$log_month/error_$log_day.log


    #再使用信号控制切割日志
    #USR1 表示nginx信号控制,切割日志 详见[nginx信号控制](https://blog.csdn.net/weixin_38111957/article/details/81023124)
    kill -USR1 `cat /www/server/nginx/logs/nginx.pid`

2、设置定时任务 输入命令"crontab -e"来设置linux定时任务 ,写入设置如下:

	#每天凌晨0点切割日志
	* 0 * * * /root/nginx/logs/savelog.sh

你可能感兴趣的:(linux,服务器配置)