我们知道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的存活量进行工作
阅读(1160) | 评论(0) | 转发(0) |