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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值