登录站点

用户名

密码

兴趣联盟 - 学生之家黑板报

  • 分享

    Linux下自动切割Nginx日志的shell脚本

    3叶歆昊 2009-08-07 18:00
    学生之家服务器的构架平台是Linux + Nginx + MySQL + PHP,才有此构架的优势是性能非常高,相同配置的服务器能负载更大的访问量。Linux系统没有Windows系统的那么多图形化界面才能有如此高的程序效率。
    用Nginx替代Apache或IIS作为WEB服务软件,自然就会有访问日志,因日志量非常大,故需要按天分割日志分门别类。
    下述脚本配合Linux的计划任务crontab -e,设定在每天00:00自动执行,即可按天切割cutlogs数组变量中存放的多个日志文件,按指定的www.studenthome.cn_20090807.log这样的文件名存放在月份文件夹。

    #!/bin/bash
    # This script run at 00:00

    # The Nginx logs path
    logs_path="/data1/logs/nginx"
    # The logs would to be cuten
    cutlogs=("default-access.log" "nginx_error.log" "www.studenthome.cn.log" "uc.studenthome.cn.log" "www1.studenthome.cn.log" "img.studenthome.cn.log" "u.studenthome.cn.log" "wap.studenthome.cn.log" "phpmyadminmysql.studenthome.cn.log" "test.studenthome.cn.log" "oa.studenthome.cn.log")
    mkdir -p ${logs_path}/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/

    #per log start
    log_i=0
    #logs total
    log_j=${#cutlogs[@]}
    # log_i < log_j
    while [ "$log_i" -lt "$log_j" ]
    do
    mv ${logs_path}/${cutlogs[$log_i]} ${logs_path}/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/${cutlogs[$log_i]}_$(date -d "yesterday" +"%Y%m%d").log
    let log_i=log_i+1
    done
    kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`

    回复 
涂鸦板
插入图片
  插入   删除
+增加图片 只支持 .jpg、.gif、.png为结尾的URL地址