博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx 日志文件切割
阅读量:5285 次
发布时间:2019-06-14

本文共 1490 字,大约阅读时间需要 4 分钟。

偶然发现access.log有21G大,所以将其切割。

Nginx 是一个非常轻量的 Web 服务器,体积小、性能高、速度快等诸多优点。但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将 导致日志文件容量非常大,不便于管理。当然了,我们也不希望看到这么庞大的一个访问日志文件,那需要手动对这个文件进行切割。

在 Linux 平台上 Shell 脚本丰富,使用 Shell 脚本加 crontab 命令能非常方便地进行切割,但在 Windows 平台上就麻烦一些了,刚才弄了好长时间,就在这里记录整理一下。

日志文件切割要求

由于 Nginx 的日志都是写在一个文件当中的,因此,我们需要每天零点将前一天的日志存为另外一个文件,这里我们就将 Nginx 位于 logs 目录中的 access.log 存为 access_[yyyy-MM-dd].log 的文件。其实 logs 目录中还有个 error.log 的错误日志文件,这个文件也需要每天切割一个,在这里就说 access.log 了,error.log 的切割方法类似。

Linux 平台切割

在 Linux 平台上进行切割,需要使用 date 命令以获得昨天的日期、使用 kill 命令向 Nginx 进程发送重新打开日志文件的信号,以及 crontab 设置执行任务周期。

先创建一个 Shell 脚本,如下:

#!/bin/bash## 零点执行该脚本## Nginx 日志文件所在的目录LOGS_PATH=/usr/local/nginx/logs## 获取昨天的 yyyy-MM-ddYESTERDAY=`date -d "yesterday" +"%Y%m%d"`## 移动文件mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

 

上面这个脚本中的最后一行必须向 Nginx 的进程发送 USR1 信号以重新打开日志文件,如果不写的话,Nginx 会继续将日志信息写入 access_[yyyy-MM-dd].log 的那个文件中,这显然是不正确的。

脚本完成后将其存入 Nginx 安装目录的 sbin 中,取名为 cut-log.sh,之后使用 crontab -e 新增一个定时任务,在其中增加执行这个脚本:

0 1 * * *   /home/shell/cut_log/cut_nginx_log.sh

 /sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

查看crontab服务状态:service crond status

手动启动crontab服务:service crond start

查看crontab服务是否已设置为开机启动,执行命令:ntsysv

没有就加入开机自动启动:免得每次手动启动麻烦:chkconfig --level 35 crond on

转载于:https://www.cnblogs.com/mr-amazing/p/4475884.html

你可能感兴趣的文章
HW3.16
查看>>
最短路算法--转载---贝尔曼,迪杰斯特拉,弗洛伊德,很简单易懂,模板算是吧...
查看>>
猜数字游戏
查看>>
DELPHI XE Android 开发笔记
查看>>
用SquishIt最小化Css与Javascript文件
查看>>
调用WCF错误-There was no endpoint listening
查看>>
JS回调函数全解析教程
查看>>
定义未知成员和 Null 处理属性
查看>>
C++ string char[] 转化
查看>>
组件之间传值
查看>>
oracle 修改进程
查看>>
vue.js数据绑定
查看>>
PAT1013 Battle Over Cities
查看>>
Beta阶段项目复审
查看>>
《利用python进行数据分析》NumPy基础:数组和矢量计算 学习笔记
查看>>
Levenshtein Distance
查看>>
Java循环链表实现约瑟夫环(搬运)
查看>>
kali虚拟机添加共享文件夹
查看>>
NOIP2014-提高组初赛C语言解析(选择填空题)
查看>>
kubernetes为什么是mini-Paas
查看>>