랩톱에서 항상 실행해야하는 일부 응용 프로그램이 있습니다.
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 섹션 구성 할 수 있습니다.command
exitcodes
기본값 exitcodes
은 0,2이므로 다음을 의미합니다.
이 목록에 정의되지 않은 종료 코드로 종료되면 supervisord가 프로세스를 다시 시작합니다.
일반적으로 원하는 것 : 스크립트가 충돌하면 다시 실행 하거나 사용자가 올바르게 닫은 경우 아무것도하지 마십시오 (또는 스크립트가 성공적으로 완료되었습니다)
가장 간단한 구성을 먼저 시도하십시오.
[program:you_app_name]
command=/path/to/you/app
유연성을 높이려면 구성 파일 설명서를 참조하십시오 .