저는 아마존 리눅스를 사용하고 있습니다. 아직 실행되고 있지 않은 경우 프로세스를 시작하고 싶습니다. 이것은 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