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