nginx自动日志切割方法

代码 代码 1332 人阅读 | 0 人回复

<
援用链接:https://www.cnblogs.com/comprehensive/p/12856097.html
布景阐明
  nginx运转的太暂,日记便会愈来愈年夜,有须要对他举办日记切割,而nginx的日记文件有两个:
  
   access.log 记载哪些用户,哪些页里和用户阅读器,IP等会见疑息;
error.log 记载效劳器毛病的日记
  
  linux kill -usr1 战kii -HUP的感化
  
   kill -USR1亦凡是被用去见告使用法式重载设置文件;比方,背Apache HTTP效劳器收收一个USR1旌旗灯号将招致以下步伐的发作:截至承受新的毗连,等候当前毗连截至,从头载进设置文件,从头翻开日记文件,重启效劳器,从而完成相对光滑的没有闭机的变动。
kill -HUP pid 大概 killall -HUP pName:
此中pid是过程标识,pName是过程的称号
假如念要变动设置而没有需截至并从头启动效劳,可使用上里两个号令。正在对设置文件做须要的变动后,收回该号令以静态更新效劳设置。
按照商定,当您收收一个挂起旌旗灯号(旌旗灯号1或HUP)时,年夜大都效劳器过程(一切经常使用的过程)城市举办复位操作并从头减载它们的设置文件。
  
1、操纵剧本日记切割(按天举办日记切割)
以下剧本任选一个便止;
  1. A.编写剧本
  2. #!/bin/bash
  3. year=`date +%Y`
  4. month=`date +%m`
  5. day=`date +%d`
  6. logs_backup_path="/usr/local/nginx/logs_backup/$year$month"               #日记存储途径
  7. logs_path="/usr/local/nginx/logs/"                                        #要切割的日记途径
  8. logs_access="access"                                                      #要切割的日记
  9. logs_error="error"
  10. pid_path="/usr/local/nginx/logs/nginx.pid"                                 #nginx的pid
  11. [ -d $logs_backup_path ]||mkdir -p $logs_backup_path
  12. rq=`date +%Y%m%d`
  13. #mv ${logs_path}${logs_access}.log ${logs_backup_path}/${logs_access}_${rq}.log
  14. mv ${logs_path}${logs_error}.log ${logs_backup_path}/${logs_error}_${rq}.log
  15. kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
复造代码
  1. B.编写剧本
  2. #! /bin/bash
  3. ## 假定nginx的日记寄存途径为/data/logs/
  4. d=`date -d "-1 day" +%Y%m%d`   天生今天的日期
  5. logdir="/data/logs"   界说寄存地位
  6. nginx_pid="/usr/local/nginx/logs/nginx.pid" 界说地位,找他的pid
  7. cd $logdir 进进目次下
  8. for log in `ls *.log`  做个for轮回
  9. do   
  10.    mv $log $log-$d   做一个更名操纵
  11. done
  12. /bin/kill -HUP `cat $nginx_pid`  从头减载一下,天生新的日记文件
复造代码
设置按时使命
  1. # crontab –e
  2. 59 23 * * * bash /usr/local/nginx/cut_ngnix_log.sh   #天天23:59分隔初施行;
复造代码
** 2、操纵logrotate办理日记**
(1)默许centos体系装置自带logrotate,硬件包疑息阐明;
  1. # rpm -ql  logrotate
  2. /etc/cron.daily/logrotate
  3. /etc/logrotate.conf  # 主设置文件
  4. /etc/logrotate.d   # 设置目次
复造代码
(2)利用Logrorate切割日记
  1. # vim /etc/logrotate.d/nginx
  2. /var/log/nginx/*.log     #此处为nginx存储日记的处所,日记按照实践途径挖写;
  3. {
  4.     daily                    #指定转储周期为天天
  5.     rotate 30                #转储次数,超越将会删除最老的那一个
  6.     missingok                #假如日记文件丧失,没有要显现毛病
  7.     compress                 #经由过程gzip 紧缩转储当前的日记
  8.     delaycompress            #当前转储的日记文件到下一次转储时才紧缩
  9.     notifempty               #当日记文件为空时,没有停止轮转
  10.     postrotate               #施行的指令
  11.       if [ -f /var/run/nginx/nginx.pid ]; then
  12.           kill -USR1 `cat /var/run/nginx/nginx.pid`
  13.       fi
  14. endscript                   #PID途径按照实践途径挖写;
  15. }
复造代码
(3)保留好设置文件后,测试结果:
  1. # logrotate -vf /etc/logrotate.d/nginx
  2. access.log  access.log.1  error.log  error.log.1
复造代码
(4)按时使命施行
  1. #crontab –e
  2. 0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx #天天清晨00:00主动施行日记切割使命;
复造代码
扩大链接,若有侵权,请联删
1.nginx日记切割办法
2.linux kill usr1的感化
微疑公家号:
214852cvse0jrzj3i1ij73.png


免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则