English |
  • 美国VPS主机推荐
  • |
  • 代购服务
  • |
  • 10美元以下VPS
  • |
  • VPS新手指南/教程
  • |
  • 留言板
  • |
  • 关于
  • | 登录 |

    Nginx日志切割脚本

    2011年03月7日 上午 | 作者:VPS侦探

    目前网上也有一些Nginx日志切割脚本,但是论坛还是有用户反映网上Nginx日志切割脚本有问题,我感觉一般是因为脚本中的参数设置问题,或者是crontab中的设置问题。

    为方便lnmp一键安装包用户,我也写了一个Nginx日志切割脚本,下载地址:http://soft.vpser.net/lnmp/ext/cut_nginx_logs.sh

    如果是lnmp0.5/0.6/0.7/0.8/0.9通用,用户可以仅修改log_files_name后面的要切割的日志文件名就直接使用。

    脚本主要参数:

    #设置nginx日志文件目录路径
    log_files_path="/home/wwwlogs/"
    #日志文件将会存放到/home/wwwlogs/年/月/日志文件名_年月日.log
    log_files_dir=${log_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
    #设置要切割的日志的名字,如果日志目录下面的日志文件名为vpser.net.log,则填写vpser.net,每个日志名用空格分隔
    log_files_name=(access vpser.net licess)
    #设置nginx文件的位置
    nginx_sbin="/usr/local/nginx/sbin/nginx"
    #设置日志保存的时间,天
    save_days=30

    如果是非lnmp一键安装包用户可以通过修改上述参数适应你的nginx环境。

    nginx日志切割脚本下载到/root/下面。再添加自动执行,执行:crontab -e

    输入:00 00 * * * /bin/bash /root/cut_nginx_logs.sh 每天0点整开始切割脚本。

    点击查看更多crontab的教程

    本文仅供Nginx用户及lnmp用户参考,如有问题欢迎到https://bbs.vpser.net反馈。

    原创文章谢绝转载!

    >>转载请注明出处:VPS侦探 本文链接地址:https://www.vpser.net/manage/cut-nginx-log-files.html
    VPS侦探推荐:
    遨游主机DiaHostingLinodePhotonVPSOAH新加坡VPSLOCVPSKVMLAVPS2EZBudgetVMVultr美国VPS主机
    欢迎加入VPS侦探论坛交流:https://bbs.vpser.net

    发表评论

    *必填

    *必填 (不会被公开)

    5 + 3 = ?

    评论(24条评论)

    1. 因为经常会建新站
      每建一个新站都要编辑一下脚本文件很麻烦
      所以想问如何设置可以自动切割"/home/wwwlogs/"下所有日志

    2. lnmp0.9日志分割怎么实现!!!!上面说的,,都不知道怎么改!!是命令。。还是文件,,,迷茫!!

      VPSer 回复:

      @美剧排行榜, 用户可以仅修改log_files_name后面的要切割的日志文件名就直接使用。

      #设置要切割的日志的名字,如果日志目录下面的日志文件名为vpser.net.log,则填写vpser.net,每个日志名用空格分隔

      请仔细查看解释说明

    3. 我刚安装好,已经在分割的日志文件日期怎么是昨天的?

      VPSer 回复:

      @mengzc, 看一下系统时间

    4. 在网上看到很多人都说使用/etc/crontab来执行计划任务但是我没有成功,使用crontab -e就可以了,不知道为什么。

      VPSer 回复:

      @看电影的网站, 最正规的方法就是crontab -e添加

    5. #!/bin/bash
      #自动版日志切割 无需设置
      #function:cut nginx log files for lnmp v0.5 and v0.6
      #author: http://lnmp.org

      #set the path to nginx log files
      log_files_path="/home/wwwlogs/"
      log_files_dir=${log_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")

      #set the path to nginx.
      nginx_sbin="/usr/local/nginx/sbin/nginx"
      #Set how long you want to save
      save_days=30

      ############################################
      #Please do not modify the following script #
      ############################################
      mkdir -p $log_files_dir

      cd $log_files_path
      #cut nginx log files
      for d in `ls -f *.log`;do
      mv ${log_files_path}${d} ${log_files_dir}/$(date -d "yesterday" +"%Y%m%d")_$d
      done

      #delete 30 days ago nginx log files
      find $log_files_path -mtime +$save_days -exec rm -rf {} \;

      $nginx_sbin -s reload