关闭

Nginx日志定时切割脚本

196人阅读 评论(0) 收藏 举报
分类:

nginx的日志文件如果你不处理,将变得越来越大,我们可以写一个nginx日志切割脚本来自动切割日志文件。


第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件


第二步向nginx主进程发送USR1信号。

nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。

重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。

工作进程立刻打开新的日志文件并关闭重名名的日志文件。

然后你就可以处理旧的日志文件了。

nginx日志按日期自动切割脚本cut_nginx_log.sh如下:

#!/bin/bash
#by www.elesos.com
 
#设置日志文件存放目录
logs_path="/opt/nginx/html/"
#设置pid文件
pid_path="/opt/nginx/logs/nginx.pid"
#创建日志存放目录


mkdir-p${logs_path}$(date-d"yesterday" +"%Y")/$(date-d"yesterday" +"%m")/

#重命名日志文件
mv ${logs_path}elesos.com.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/elesos.com_$(date -d "yesterday" +"%Y%m%d").log
mv${logs_path}elesos.com.log ${logs_path}$(date-d"yesterday" +"%Y")/$(date-d"yesterday" +"%m")/elesos.com_$(date-d"yesterday" +"%Y%m%d").log
#向nginx主进程发信号重新打开日志
kill-USR1`cat${pid_path}`

注意修改上面的日志文件名为你自己的。


然后通过crontab设置作业,参见Linux计划任务cron使用指南


0 0 * * * bash /usr/local/nginx/nginx_log.sh

这样就每天的0点0分把nginx日志重命名为日期格式,并重新生成今天的新日志文件。

艺搜参考

http://www.nginx.cn/255.html

http://www.jb51.net/LINUXjishu/33585.html


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Windows下nginx定时分割日志

@echo off rem @echo off rem 取1天之前的日期 echo wscript.echo dateadd("d",-1,date) >%tmp%\tmp.vbs for /f ...
  • lisai17
  • lisai17
  • 2014-06-16 14:52
  • 1117

Linux下nginx日志自动切割

linux平台下nginx日志的自动切割
  • allus0918
  • allus0918
  • 2016-01-07 17:52
  • 1206

nginx 日志格式化,按天分割 并删除七天的日志

对于nginx日志格式化 Log_format:用于定制Nginx日志的输出格式   main 为此日志格式名称  可以在下面的access_log命令中引用 Log_format   name(...
  • kane_canpower
  • kane_canpower
  • 2016-10-29 15:20
  • 1093

Linux 定时切割日志任务

系统定时任务配置文件: SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ 1 0 * * * /home/f...
  • u010363836
  • u010363836
  • 2015-08-28 18:47
  • 1268

nginx 日志文件切割

偶然发现access.log有21G大,所以将其切割。 Nginx 是一个非常轻量的 Web 服务器,体积小、性能高、速度快等诸多优点。但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不...
  • lifuxiangcaohui
  • lifuxiangcaohui
  • 2015-11-17 18:46
  • 2355

nginx自动切割访问日志

Web 访问日志 (access_log) 记录了所有外部客户端对Web服务器的访问行为,包含了客户端IP,访问日期,访问的URL资源,服务器返回的HTTP状态码等重要信息。 一条典型的Web访问日...
  • xiaoyu411502
  • xiaoyu411502
  • 2016-04-04 12:28
  • 1252

Nginx日志切割之Logrotate篇

Nginx日志切割之Logrotate篇知识管理部 孙磊      Logrotate是Linux下一款日志管理工具,可用于日志文件的转储(即删除旧日志文件,创建新日志文件)。可以根据日志大小或...
  • forthemyth
  • forthemyth
  • 2015-03-04 17:00
  • 7424

nginx日志自动分割的完美实现

大家都知道,Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,因它的稳定性、丰富的功能集、示例配置文件和低系统资...
  • zbfaaadjl
  • zbfaaadjl
  • 2014-01-25 15:23
  • 19004

centos中nginx按日期自动分割访问日志

Web 访问日志 (access_log) 记录了所有外部客户端对Web服务器的访问行为,包含了客户端IP,访问日期,访问的URL资源,服务器返回的HTTP状态码等重要信息。 一条典型的Web访问日...
  • bjnihao
  • bjnihao
  • 2016-06-15 13:59
  • 2345

Nginx实战(三) 日志配置与切割

访问日志主要记录客户端访问Nginx的每一个请求,格式可以自定义。通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息。 Nginx中访问日志相关指令主要有两条,...
  • u012486840
  • u012486840
  • 2016-10-11 13:31
  • 4872
    个人资料
    • 访问:173665次
    • 积分:5265
    • 等级:
    • 排名:第6056名
    • 原创:353篇
    • 转载:0篇
    • 译文:0篇
    • 评论:29条
    博客专栏
    最新评论