ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re[2]: nginx (FreeBSD port)



Hello Dmitry,

Friday, December 3, 2004, 5:19:43 PM, you wrote:
SAO>> возникло желание дописать следующую фичи:
SAO>> 1) остановка nginx перед удаление порта/пакета
SAO>> 2) запуск nginx после установки порта/пакета

DM> Зачем, если nginx умеет рестартовать при апгрейде бинарника плавно, без 
DM> даунтайма?

действительно... можно ведь этот процесс автоматизировать

навскидку (не тестировал)

NGINX_ROOT=/usr/local/nginx
NGINX_LOGS=logs
NGINX_SBIN=sbin

# на солярке родной ps не понимает -awx
PS_CMD=/usr/ucb/ps

NGINX_PID=${NGINX_ROOT}/${NGINX_LOGS}/nginx.pid
NGINX_NEWPID=${NGINX_ROOT}/${NGINX_LOGS}/nginx.pid.newbin

if [ -f ${NGINX_PID} ]; then
   PID=`cat ${NGINX_PID}`
   echo -n "Graceful change nginx binary... "
   kill -USR2 ${PID}
   if [ -f ${NGINX_NEWPID} ]; then
      kill -WINCH ${PID}
      while true; do
            NEED_WAIT=`${PS_CMD} -awx|grep "nginx: worker process is shutting 
down"`
            if [ -z "${NEED_WAIT}" ]; then
               break
            fi
            sleep 1
      done
      kill -QUIT ${PID}
      mv -f ${NGINX_NEWPID} ${NGINX_PID}
      NEW_PID=`cat ${NGINX_PID}`
      echo "new binary running, pid=${NEW_PID}"
   elif
      echo "failed, check log files"
   fi
fi

-- 
Best regards,
 Alexander                            mailto:voodoo_alex@xxxxxxx





 




Copyright © Lexa Software, 1996-2009.