BASH 내에서 실행되는 스크립트의 응답을 캡처하고 사용하려고합니다.


0

스크립트를 실행하고 파일로 출력하는 함수를 만들고 있습니다. 그런 일이 발생하면 중지를 실행하여 파일을 한 줄씩 읽습니다. 서버가 시작하지 못하면 -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

조건 전과 스크립트 내부에서 첫 번째 스크립트에서 동일한 작업 "su -s / bin / bash user / usr / local / server / bin / server stop $ p"를 두 번 수행합니다. 의도적인가요?
lgeorget

답변:


0

당신이 원하는

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

그러나 IMHO는보다 직접적인 방법으로 프로세스의 PID를 얻는 방법을 찾아야합니다. 그들은 어딘가에 ".pid"파일을 남기지 않습니까? 그리고 su정류장을 발행 해야 합니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.