응용 프로그램 충돌 후 자동 재시작 실행 파일 [Windows]


1

키오스크를위한 독립 실행 형 응용 프로그램 만들기 24

드물게 응용 프로그램이 충돌하더라도 자동으로 다시 시작하는 방법이 필요합니다. Nuc에서 Windows 10을 실행하고 있습니다.

Windows 전문가가이를 달성하는 가장 좋은 방법을 제안 할 수 있습니까?


다른 옵션은 응용 프로그램 서비스를 작성하는 것입니다. 서비스 자체를 3 번 ​​다시 시작하도록 설정할 수 있습니다. 이렇게하면 누구나 닫을 수있는 명령 프롬프트 창이 표시되지 않습니다. 이것은 설정하기가 더 어렵습니다.
LPChip

답변:


2

한 가지 해결책은 무한 for루프가 있는 배치 파일을 사용 하여 응용 프로그램이 닫히면 자동으로 다시 시작하는 것입니다. 애플리케이션 설계 방식에 따라 여기에는 두 가지 가능성이 있습니다.

응용 프로그램이 시작되어 동일한 프로세스에서 실행되는 경우 매우 간단한 배치 파일을 사용할 수 있습니다.

@echo off
:Start
C:\path\to\application.exe
:: Wait 30 seconds before restarting.
TIMEOUT /T 30
GOTO:Start

이것은 무한정 실행됩니다. 언제든지 application.exe닫히거나 충돌하면 배치 파일이 다시 시작됩니다.

이 것 없는 경우 일 application.exe출시 subapp.exe후하고 application.exe닫습니다. 이 경우 더 복잡한 것이 필요합니다.

@ECHO off
SET _PollingInterval=30

:BatchStart
C:\path\to\application.exe

:Start
:: Uncomment the following line on versions of Windows prior to Windows 7 and comment out the TIMEOUT line. The PING solution will not be 100% accurate with _PolingInterval.
:: PING 127.0.0.1 -n %_PollingInterval% >nul
TIMEOUT /T %_PollingInterval%

SET PID=
FOR /F "tokens=2 delims= " %%i IN ('TASKLIST ^| FIND /i "subapp.exe"') DO SET PID=%%i
IF [%PID%]==[] (
    ECHO Application was not running. Restarting script.
    GOTO BatchStart
)
GOTO Start

GOTO:EOF

응용 프로그램에 다양한 프로세스가있을 수있는 경우 FINDSTR /i "subapp.exe application.exe"대신 대신 비슷한 것을 사용할 수 FIND /i "subapp.exe"있지만 공백을 FINDSTR델리 미네 이터 로 사용하는 것처럼 이름이 공백 인 프로세스에는 작동하지 않습니다 .

이러한 배치 파일을 시작한 후에 중지하려면 응용 프로그램을 열어두고 명령 프롬프트로 전환하십시오. 그런 다음 Ctrl+를 사용 C하고 스크립트를 끝내고 싶다는 것을 인정하십시오. 스크립트가 종료되면 응용 프로그램을 닫습니다.

더 읽을 거리 :


감사! 한 가지 간단한 질문은 응용 프로그램이 즉시 다시 시작되지 않도록 가장 간단한 솔루션에 지연을 추가하는 방법은 무엇입니까?
Bachalo

TIMEOUT명령을 사용할 수 있습니다 . 대답의 예에 추가했습니다.
Worthwelle
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.