分享
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`
|