상태가 모호해질 때까지 명령 실행 시도를 반복하고 데이터를 유지합니다.

상태가 모호해질 때까지 명령 실행 시도를 반복하고 데이터를 유지합니다.

내가 만난 것은 데몬이 다시 시작된 후 처음 몇 번의 명령 실행 시도에서 2를 반환하고(뒤에 stderr 메시지가 나타남) 모든 것이 제대로 작동했다는 것입니다.

이 오류를 해결하려면 while/do/done/untilsome 의 기능을 활용해야 한다고 생각했지만 sleep흥미로운 부분은 일반 실행으로 얻은 모든 데이터를 가져야 한다는 것입니다.

...
RESULT=$(command param1 param2 2>&1)
SIG=$?
...

command param1 param2그러면 종료 상태가 2(주어진 값)가 아니고 변수에 STDOUT+STDERR이 있고 도입된 대로 RESULT변수에 종료 상태가 있을 때까지 반복하는 방법이 있습니까 SIG?

답변1

outfile=$(mktemp)

while ! command param1 param2 >"$outfile" 2>&1; do
    [ "$?" -ne 2 ] && break
    sleep 10
done

result=$(<"$outfile")
rm "$outfile"

2이것은 성공할 때까지 또는 적어도 종료 상태로 a를 반환하지 않을 때까지 명령을 계속해서 반복해서 실행합니다(매번 10초의 지연을 두고) .

명령의 출력은 임시 파일에 기록되고, 루프 후에 파일을 변수로 읽어와 삭제합니다. bash여기에 쓴 것처럼 변수 비트를 읽으려면 가 필요합니다 .

답변2

until [ "$SIG" != "2" ]; do
   command param1 param2
   SIG=$?
done

2가 아닌 숫자가 반환될 때까지 매번 명령이 실행됩니다.

관련 정보