免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3341 | 回复: 3
打印 上一主题 下一主题

让cron自动压缩apache日志的shell脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-11 14:46 |只看该作者 |倒序浏览

  1. #!/bin/sh
  2. #==================================
  3. #
  4. #Author: accepting
  5. #
  6. #Email: [email]accepting@126.com[/email]
  7. #
  8. #Date:  2008.01.11
  9. #
  10. #[url]Http://accepting.sharera.com[/url]
  11. #
  12. #==================================
  13. #
  14.         LOG_FILE="/root/log/"                              //存放apache日志目录
  15.         end_filename="_access.log"                     //apache日志的命名格式后一部分
  16. #======================================================================
  17. if [ $# -eq 0 ] ; then

  18.         CurYear=`date   +%Y`                       
  19.            
  20.         CurMonth=`date   +%m`  

  21.         CurDay=`date   +%d`  

  22.         GetYear="$CurYear"  

  23.         GetMonth="$CurMonth"  

  24.         GetDay="`expr   $CurDay   -   1`"  

  25.         if   [   "$GetDay"   -le   0   ]   ;   then  
  26.                    GetMonth=`expr   $CurMonth   -   1`  
  27.                    if   [   "$GetMonth"   -le   0   ]   ;   then  
  28.                             GetYear=`expr   $CurYear   -   1`  
  29.                             GetMonth=12  
  30.                    fi  

  31.                    case   "$GetMonth"  
  32.                    in  
  33.                         1|3|5|7|8|10|12)  
  34.                                 GetDay=31;;  
  35.                         4|6|9|11)  
  36.                                 GetDay=30;;  
  37.                         2)  

  38.                         if   [   `expr   "$CurYear"   %   400`   -eq   0   ]   ;   then  

  39.                                 GetDay=29  

  40.                         elif  [  `expr  "$CurYear" % 4` -eq  0  -a  `expr  "$CurYear"  %  100` -ne  0 ]  ;  then

  41.                                 GetDay=29  

  42.                         else  

  43.                                 GetDay=28  

  44.                         fi  

  45.                    esac  

  46.         fi  
  47.            
  48.         if   [   `echo   "$GetMonth"   |   wc   -m`   -ne   3   ]   ;   then  
  49.       
  50.                 GetMonth=0$GetMonth  

  51.         fi  
  52.            
  53.         if   [   `echo   "$GetDay"   |   wc   -m`   -ne   3   ]   ;   then  
  54.            
  55.                 GetDay=0$GetDay  

  56.         fi
  57.       
  58.         //得到apache日志命名格式前一部分
  59.         first_filename=$GetYear$GetMonth$GetDay

  60.         //判断apache日志是否存在
  61.         if  [ -f $LOG_FILE$first_filename$end_filename    ]      ;   then
  62.                
  63.                 gzip $LOG_FILE$first_filename$end_filename

  64.                 echo   
  65.                 echo =========== $first_filename$end_filename ===========
  66.                 echo Compress $first_filename$end_filename is successfull!
  67.                 echo ===========================================
  68.                 echo   

  69.         else   

  70.                 echo
  71.                 echo ======== $first_filename$end_filename ========
  72.                 echo $first_filename$end_filename not exist!
  73.                 echo =====================================
  74.                 echo

  75.         fi

  76. fi
复制代码


这是我在为了方便维护服务器写的shell脚本,想让该脚本为你实现自动压缩请设置cron。
我不是程序员,只是喜欢玩一下新奇的玩法,请各路高手不要见笑。现在分享给有需要的朋友,如果有转载,请注明出处,本脚本第一次发布在http://accepting.sharera.com空间。

[ 本帖最后由 accepting 于 2008-1-11 14:51 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-01-11 16:00 |只看该作者
CustomLog "|/usr/sbin/rotatelogs /var/log/apache/default_log.%y%m%d 86400 480|gzip" combined
这个应该就能实现你的功能了。
不过你的脚本用来学习还是不错的。

论坛徽章:
0
3 [报告]
发表于 2008-01-11 16:16 |只看该作者
不错,这个脚是适合我现在服务器的环境写的,如果想实现这样的功能就要在apache里改一下才行。
呵呵。。。

论坛徽章:
0
4 [报告]
发表于 2008-04-23 15:48 |只看该作者
原帖由 walkerxk 于 2008-1-11 16:00 发表
CustomLog "|/usr/sbin/rotatelogs /var/log/apache/default_log.%y%m%d 86400 480|gzip" combined
这个应该就能实现你的功能了。
不过你的脚本用来学习还是不错的。

我用了这句
CustomLog "|/usr/sbin/rotatelogs /var/log/apache/default_log.%y%m%d 86400 480 |gzip" combined
后apache无法启动……
能给详细讲讲么?
这样的意思是不断的进行压缩还是日志完成才压缩?

[ 本帖最后由 iamshiyu 于 2008-4-23 17:51 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP