하나 또는 두 가지 조건이 충족되면 서버를 다시 시작하십시오.

하나 또는 두 가지 조건이 충족되면 서버를 다시 시작하십시오.

내 스크립트는 두 가지 조건을 확인하고 조건 중 하나 또는 두 가지가 모두 충족되면 서버를 한 번 다시 시작해야 합니다. 하지만 어떻게 해야할지 모르겠습니다. 대신 서버를 두 번 다시 시작하는 스크립트를 작성했습니다. 실제로 스크립트는 두 파일 모두 또는 하나 이상의 파일에 콘텐츠를 추가한 후 서버를 다시 시작해야 합니다. 이 스크립트를 완료할 수 있도록 도와주세요.

#!/bin/bash

grep -q -F 'grant codeBase "file:/var/appdynamics/AppServerAgent/-"' /var/TomCat/tomcat/conf/catalina.policy

if [ $? -ne 0 ]; then

  echo '// AppDynamics permissions

grant codeBase "file:/var/appdynamics/AppServerAgent/-" {

permission java.security.AllPermission;

permission java.lang.RuntimePermission "getClassLoader";

};

' >> /var/TomCat/tomcat/conf/catalina.policy

  echo "Appdynamics code is successfully added to catalina.policy file"

  /var/TomCat/tomcat/bin/shutdown.sh ; sleep 10 ; /var/TomCat/tomcat/bin/startup.sh

else

  echo "Appdynamics code is already added on catalina.policy file"

fi



grep -q -F 'javaagent:/var/appdynamics/AppServerAgent/javaagent.jar' /var/TomCat/tomcat/bin/setenv.sh

if [ $? -ne 0 ]; then

    echo "export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/var/appdynamics/AppServerAgent/javaagent.jar -Dappdynamics.agent.applicationName=YOUR_APPNAME -Dappdynamics.agent.tierName=YOUR_TIERNAME -Dappdynamics.agent.nodeName=`hostname`""

    read -p "Enter the value for Dappdynamics.agent.applicationName : " n1

    read -p "Enter the value for Dappdynamics.agent.tierName= : " n2

    appname=$n1

    tiername=$n2

    echo 'export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/var/appdynamics/AppServerAgent/javaagent.jar -Dappdynamics.agent.applicationName='$appname' -Dappdynamics.agent.tierName='$tiername' -Dappdynamics.agent.nodeName=`hostname`"' >> /var/TomCat/tomcat/bin/setenv.sh

        /var/TomCat/tomcat/bin/shutdown.sh ; sleep 10 ; /var/TomCat/tomcat/bin/startup.sh

else

  echo "AppDynamics Environment variable is already set on setenv.sh"

fi

답변1

플래그 변수를 사용하여 다시 시작이 필요한지 확인할 수 있습니다. 스크립트 시작 부분에서 변수 값을 0으로 설정합니다.

restartFlag=0

그런 다음 if문에서 조건이 true로 평가되면 값을 1로 설정합니다.

if ...
    restartFlag=1

또한 이 두 명령문에서 종료/시작 명령을 제거해야 합니다 if.

스크립트 끝에서 플래그 변수의 값을 다시 확인하고 다시 시작을 트리거합니다.

if [ $restartFlag -ne 0 ]; then
    /var/TomCat/tomcat/bin/shutdown.sh ; sleep 10 ; /var/TomCat/tomcat/bin/startup.sh
fi

관련 정보