CentOS 웹서비스 start stop 쉘스크립트



굳이 아파치랑 NGINX 를 시작 및 종료를 해주는 스크립트가 필요할까 싶지만, Let's encrypt 인증서 갱신시 웹서비스 포트가 사용중이면 갱신이 안되는 문제점이 있습니다.


pstree 로 웹서비스가 완전히 종료 되었는지 확인하고 종료되는 쉘스크립트입니다.


무한루프에 빠질수도 있기때문에 20초로 제한걸었습니다.


#!/bin/sh



CMD="$1"

LOGFILE="/root/web-service.log"


if [ -e "/usr/bin/systemctl" ] ; then

    WEBCMD1="/usr/bin/systemctl $CMD nginx"

    WEBCMD2="/usr/bin/systemctl $CMD httpd"

else

    WEBCMD1="/sbin/service nginx $CMD"

    WEBCMD2="/sbin/service httpd $CMD"

fi


if [ "$CMD" == "start" ] ; then

    $WEBCMD1 >> $LOGFILE

    $WEBCMD2 >> $LOGFILE

    for i in {1..20}; do

        PSD=`pstree | grep httpd | wc -l`

        if [ $PSD -eq 1 ] ; then

            echo "start" >> $LOGFILE

            break;

        else

            echo "not run" >> $LOGFILE

            sleep 1

        fi

    done

elif [ "$CMD" == "stop" ] ; then

    $WEBCMD1 >> $LOGFILE

    $WEBCMD2 >> $LOGFILE

    for i in {1..20}; do

        PSD=`pstree | grep httpd | wc -l`

        if [ $PSD -eq 0 ] ; then

            echo "stop" >> $LOGFILE

            break;

        else

            echo "running" >> $LOGFILE

            sleep 1

        fi

    done

else

    exit

fi


20초 동안에 안되는 경우는 거의 없겠지만 사용자가 있다거나 그러면 정상동작하지 않을 수도 있습니다.


블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

댓글을 달아 주세요