首页 > 资讯列表 > 编程/数据库 >> PHP

Linux下Nginx日志切割

PHP 2014-11-29 22:13:17 转载来源: 网络整理/侵权必删

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。

但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将 导致日志文件容量非常大,不便于管理。当然了,我们也不希望看到这么庞大的一个访问日志文件,那需要手动对这个文件进行切割。

Nginx不能像Apache那样有日期时间变量供我们在配置时就写好,让web server在写日志就会根据我们规定好的文件格式来生成日志文件.

Nginx要想实现一天一个日志文件必须借助Linux下强大的shell脚本来实现.

其原理是,当执行这个shell脚本时,脚本生成以日期为格式文件名,并通过mv命令对当前的日志进行移动命名.然后再向Nginx 的进程发送 USR1 信号以重新打开日志文件,如果不发送的话,Nginx 会继续将日志信息写入 access_[yyyy-MM-dd].log 的那个文件中,这显然是不正确的

切割Nginx日志文件的Shell脚本如下:

#!/bin/bash
## 零点执行该脚本
## Nginx 日志文件所在的目录
LOGS_PATH=/usr/local/nginx/logs
## 获取昨天的 yyyy-MM-dd
YESTERDAY=$(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/nginx.pid)

 

上面加红部分需要你自己根据你的情况修改.然后复制保存为cut_logs.sh

下一步把cut_logs.sh加到计划任务

执行crontab -e打开计划任务

写入如下命令

#切合nginx logs
0 0 * * * /bin/bash /data/sh/cut_log.sh

红色部分改成你刚才保存的cut_log.sh文件路经

 

本文为phperz原创内容,转载请注明出处


标签: Linux Nginx 日志 切割


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持