Chinaunix首页 | 论坛 | 博客
  • 博客访问: 812065
  • 博文数量: 167
  • 博客积分: 7173
  • 博客等级: 少将
  • 技术积分: 1671
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-04 23:07
文章分类

全部博文(167)

文章存档

2018年(1)

2017年(11)

2012年(2)

2011年(27)

2010年(88)

2009年(38)

分类: 系统运维

2011-03-24 16:41:11

我们知道nginx日志文件要归档则需relog,具体的步骤是:
mv access_log 到其它目录
然后
kill -USR1 `cat $NGINX_PID`

在网上看到都是利用crontab 令做一个服务进行操作

那起一个nginx的deamon进行进行日志归档,岂不是能简化很多操作


对日志进行归档的操作函数
function relognginx() {
   LOG_DIR=$NGINX_HOME/logs
   DATE=`date +%Y%m%d%M%S`
   cd $LOG_DIR
   log_list="error.log|access.log"
   for i in `echo $log_list | awk -F"|" '{ for(i=1;i<=NF;i++) {print $i} }'`
   do
     isize=$(du -sh $i | awk '{print $1}')
     if echo $isize | grep -q "G"
       then
        mv $i $i.$DATE
     fi
   done
   kill -USR1 `cat $NGINX_PID`
   #find . -type f -mtime +7 -exec rm -f {} \;
}

构造deamon进程进行调用上面的方法

function daemon() {
  tmppid=$1
  while [ 1 -le 2 ]
  do
    [[ ! -e $NGINX_PID ]] && return 0
    mypid=$(cat $NGINX_PID)
    if [[ $mypid -eq $tmppid ]] ; then
       relognginx
    else
       echo "out daemon"
       return 0
    fi
    sleep 3
  done
}

然后在nginx start的时候增加调用这个deamon方法
以下是我的nginx管理脚本中的启动方法
start() {
        ulimit -HSn $NGINX_MAXFD
        if [[ -n $NGINX_USER ]]
        then
                su - $NGINX_USER -c "$NGINX_SBIN -c $NGINX_CONF"
        else
                $NGINX_SBIN -c $NGINX_CONF
        fi
        ret=$?
        if [ $ret -eq 0 ]; then
                action $"Starting $NGINX_NAME: " /bin/true
                daemon $(cat $NGINX_PID) &
        else
                action $"Starting $NGINX_NAME: " /bin/false
        fi
}

主要是利用一个后台进行和pid的存活量进行工作

阅读(1118) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~