zhouying23 发表于 2016-12-29 07:08:25

NginxWeb服务器定时切割日志shell脚本

  Nginx 定时切割日志
  定时切割方式有按月切割、按天切割、按小时切割等。最常用的是按天切割。
  Nginx 不支持像Apache一样使用cronolog来轮转日志,但是可以采用以下方式来实现日志文件的切割:
  mv /data1/logs/acccess.log /data1/logs/20130423.log
  kill -USR1 Nginx主进程号
  首先通过mv命令将日志文件重命名为 /data1/logs/20130423.log,然后发送kill -USR1信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件/data1/logs/access.log.如果nginx.conf配置文件中使用了"pid /usr/local/webserver/nginx/nginx.pid;"指令,指定了pid文件的存放路径,我们可以通过cat 这个pid文件获得Nginx的主进程号,命令如下:
  kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`
  如果想每天定时切割日志,还须接触crontab.我们可以写一个按天切割的日志,按年、按月分目录存放日志的shell脚本:
  vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
  #!/bin/bash
  #这个脚本须在每天的00:00运行
  #Nginx日志文件的存放路径
  logs_path="/data1/logs/"
  mkdir -p ${log_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
  mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" + "%Y%m%d").log
  kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`
  保存,另外,配置crontab每天凌晨00:00定时执行这个脚本:
  chmod 777 cut_nginx_log.sh
  crontab -e
  输入一下内容并保存:
  00 00 * * * /bin/bash /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
页: [1]
查看完整版本: NginxWeb服务器定时切割日志shell脚本