BASH 내에서 실행되는 스크립트의 응답을 캡처하고 사용해보세요.

BASH 내에서 실행되는 스크립트의 응답을 캡처하고 사용해보세요.

스크립트를 실행하고 파일로 출력하는 함수를 만들고 있습니다. 이런 일이 발생하면 파일을 한 줄씩 읽고 실행이 중지됩니다. 서버가 시작하지 못하면 -9 $pid를 종료하는 if 조건을 추가하고 싶습니다. 작동하지 않습니다.

function stop_server() {
     su -s /bin/bash user /usr/local/server/bin/server list | sed "1,2 d" >>jvms
     while IFS="" read -r p || [ -n "$p" ]
     do
         su -s /bin/bash user /usr/local/server/bin/server stop $p
         if [[ $(su -s /bin/bash user /usr/local/server/bin/server stop $p)= 'Server $p stop failed. Check server logs for details.' ]];
         then
               PID="ps -ef|grep -v grep |grep '$p' | awk '{print $2}'"
               kill -9 $PID
         fi
     done
}

서버가 $p를 중지한 결과를 캡처하고 싶은데 다음과 같이 할 수 있다고 생각했습니다.

      if [ $results = 'Server $p stop failed. Check server logs for details.' ]; then
         PID="ps -ef|grep -v grep |grep '$p' | awk '{print $2}'"
         kill -9 $PID
      fi

답변1

당신이 원하는

 PID=$(ps -ef|grep -v grep |grep '$p' | awk '{print $2}')

하지만 IMHO는 보다 직접적인 방법으로 프로세스의 PID를 얻을 수 있는 방법을 찾아야 합니다. ".pid" 파일을 어딘가에 남겨두지 않을까요? su정지 명령을 내려야 합니까 ?

관련 정보