실패한 종료 코드를 반환하지 않고 프로세스가 존재하는지 확인하는 방법은 무엇입니까?

실패한 종료 코드를 반환하지 않고 프로세스가 존재하는지 확인하는 방법은 무엇입니까?

저는 아마존 리눅스를 사용하고 있습니다. 아직 실행되고 있지 않은 경우 프로세스를 시작하고 싶습니다. 이것은 Jenkins Maven 작업에 포함된 bash 스크립트입니다. 그래서 나는 가지고있다

pids=$(pidof /usr/bin/Xvfb)
if [ ! -n "$pids" ]; then
    Xvfb :0 -screen 5 1024x768x8 &
fi

불행하게도 프로세스가 없으면 "pids=$(pidof /usr/bin/Xvfb)" 줄은 실패한 종료 코드를 반환하고 그 뒤의 다른 줄은 실행되지 않습니다. 실패한 종료 코드를 반환하지 않도록 위의 내용을 작성하는 방법이 있습니까?

답변1

에서 실행 중인 경우 set -e명령 || true뒤에 추가하여 명령 실패를 무시합니다.

pids=$(pidof /usr/bin/Xvfb || true)
if [ ! -n "$pids" ]; then
    Xvfb :0 -screen 5 1024x768x8 &
fi

그러나 pidof프로세스가 없으면 0이 아닌 상태를 반환하므로 출력이 비어 있는지 확인하는 대신 반환 상태를 직접 테스트할 수 있습니다.

if ! pidof /usr/bin/Xvfb >/dev/null 2>&1; then
    Xvfb :0 -screen 5 1024x768x8 &
fi

관련 정보