응용 프로그램 스크립트가 충돌 할 때 다시 실행 하시겠습니까?

랩톱에서 항상 실행해야하는 일부 응용 프로그램이 있습니다.

bash 스크립트를 사용하여 이러한 응용 프로그램을 시작합니다. 내 스크립트에는 다음과 비슷한 루프가 있습니다.

while true;
do
    xterm
done

응용 프로그램이 실행되고 ( xterm이 경우) 응용 프로그램이 충돌하면 루프가 다시 시작됩니다.

이 루프에서 “깨끗한”종료가 없다는 단점이 있습니다. 따라서 사용자의 의도가 닫히더라도 xterm루프가 다시 시작합니다.

방법이있다 시작하는 bash는 스크립트에서 응용 프로그램은, 실행 여부 시계 를 다시 실행하는 스크립트가 추락 한 경우 또는 아무것도하지 않고 사용자가 제대로 닫혀 있다면?



답변

이 시도:

while true; do xterm && break; done

응용 프로그램은 종료 상태 코드를 사용 하여 무언가가 잘 나가면 0을 반환합니다. 문제가 발생하면 다른 숫자를 버립니다. 이를 통해 사람들은 정확한 문제를 파악하고 찾을 수 있습니다. 이것이 다른 답변이하는 일입니다.

&&이전 명령이 제로 상태 엑시트인지 확인한 경우 루프를 중단합니다. 충돌이 발생하면 0 이외의 것을 버리고 && ...절이 트리거되지 않습니다. 단순히 루프를 돌고 실행 xterm합니다.


답변

while조건 xterm에서 다음과 같이 종료 상태 가 성공 했는지 여부를 테스트 할 수 있습니다 .

result=1
while [ $result -ne 0 ]; do
    xterm
    result=$?
done

$? 변수는 마지막으로 실행 된 명령의 종료 상태를 유지합니다.


답변

나는 당신이 사용하는 것이 좋습니다.

xterm까지; echo “프로그램이 $ 상태로 종료 되었습니까?” ; 끝난

프로그램이 종료되면 다시 실행됩니다.


답변

매우 간단하고 쉽게 프로그램이나 스크립트를 추가 하여 관리자를 사용해보십시오 . 당신이 필요로하는 최소한 같이 경우 와 아마 의 programx 섹션 구성 할 수 있습니다.commandexitcodes

기본값 exitcodes은 0,2이므로 다음을 의미합니다.

이 목록에 정의되지 않은 종료 코드로 종료되면 supervisord가 프로세스를 다시 시작합니다.

일반적으로 원하는 것 : 스크립트가 충돌하면 다시 실행 하거나 사용자가 올바르게 닫은 경우 아무것도하지 마십시오 (또는 스크립트가 성공적으로 완료되었습니다)

가장 간단한 구성을 먼저 시도하십시오.

[program:you_app_name]
command=/path/to/you/app

유연성을 높이려면 구성 파일 설명서를 참조하십시오 .


답변