최근에 Java 애플리케이션이 다음과 같이 시작된 호스트를 얻었습니다.
/bin/bash ./restarter.sh java <lot of java params>
애플리케이션이 종료되면 restarter.sh
다시 실행되도록 보장합니다.
다음과 같은 내용이 있습니다 restarter.sh
.
#!/bin/bash
until "$@"; do
echo "Server crashed with exit code $?. Respawning.." >&2
sleep 1
done
어떻게 작동하는지 이해하도록 도와주세요.
답변1
이는 명령("$@")이 실행을 완료하고 코드 0으로 종료될 때까지 반복하는 것을 의미합니다.
예:
$ until (echo Myprog ; sleep 1; exit 1;); do echo Error respawning ...; done
Myprog
Error respawning ...
Myprog
Error respawning ...
Myprog
^C
$ until (echo Myprog ; sleep 1; exit 0;); do echo Error respawning ...; done
Myprog
스크립트를 분석합니다. 일반적으로 잘 작성된 응용 프로그램은 성공적으로 완료되면 0 종료 코드로 종료되고 그렇지 않으면 0이 아닌 종료 코드로 종료됩니다. 귀하의 경우 응용 프로그램 다시 시작을 진행하기 위해 Until 명령을 사용하고 있습니다.
java <lot of java params>
애플리케이션이 성공적으로 실행을 완료할 때까지(종료 코드 0).