Windows 서비스 및 시작 트리거가 있는 작업 스케줄러

Windows 서비스 및 시작 트리거가 있는 작업 스케줄러

서비스로 실행되도록 만들어지지 않은 응용 프로그램을 서비스로 실행하기 위한 래퍼인 NSSM(Non Sucking Service Manager)을 사용하여 데스크톱 응용 프로그램을 서비스로 실행하고 있습니다.

Windows 서비스로 몇 가지 응용 프로그램을 실행하여 Windows 10이 설치된 오래된 노트북을 서버로 사용합니다. 랩톱에는 로그인한 사용자가 없으므로 리소스가 덜 필요하며 Windows 서비스 덕분에 Windows가 새 업데이트를 설치하고 재부팅할 때도 응용 프로그램이 항상 실행됩니다.

이제는 다른 애플리케이션(NSSM)의 도움 없이 애플리케이션이 자체적으로 Windows 서비스로 실행될 수 있으면 좋겠지만 그런 일은 결코 일어나지 않을 것임을 알고 있습니다. 응용 프로그램은 데스크톱 응용 프로그램이며 서비스로 실행되지 않습니다. 개발자는 그러한 기능을 절대로 향상시키지 않을 것입니다. (이미 물어봤습니다.)

실제로 응용 프로그램을 서비스로 실행하는 것에 대한 대안이 있으며 "Windows 시작 시" 트리거를 사용하여 작업 스케줄러로 응용 프로그램을 시작하는 것입니다.

두 경우 모두 사용자는 로그인할 필요가 없으며 컴퓨터는 자동으로 재부팅될 수 있으며 응용 프로그램은 네트워크에서 항상 사용할 수 있어야 합니다. 작업 스케줄러의 장점은 애플리케이션에 래퍼(NSSM)가 필요하지 않다는 것입니다.

하지만 작업 스케줄러의 신뢰성에 대해서는 잘 모르겠습니다. 연중무휴 24시간 애플리케이션을 실행하기 위한 Windows 서비스이며 다양한 복구 옵션이 있습니다. 작업 스케줄러는 연중무휴가 아닌 주기적으로 응용 프로그램을 실행하기 위한 것입니다. 따라서 복구 옵션이 없습니다.

그래서 내 질문은 다음과 같습니다

"Windows 시작 시" 작업 스케줄러가 Windows 서비스에 대한 유효한 대안을 트리거합니까?

두 가지 방법을 모두 사용해 본 적이 있고 두 가지 방법의 장단점을 더 잘 설명할 수 있는 사람이 있습니까?

답변1

예, 귀하의 사용 사례에서는 그렇습니다. 그러나 제가 이해한 바에 따르면 일반적으로 작업 스케줄러는 작업이 어느 시점에 종료될 것으로 예상합니다.기본 옵션작업이 저절로 끝나지 않으면 강제로 종료) 이 방법으로 실행하면 알 수 없는 임의적이거나 적어도 예상치 못한 제한을 테스트할 수 있습니다. 예약된 작업을 사용하는 경우 별도의 작업을 갖는 것이 더 나은 접근 방식일 수 있습니다.애플리케이션을 시작하기 위해 예약된 작업다른 하나는 애플리케이션을 중지(및/또는 다시 시작)하는 것입니다. Windows 시작 시 실행되도록 시작 작업을 예약하고 원격 관리를 통해 다른 작업을 실행할 수 있습니다.

동일하지 않은 영역 중 하나는 서비스 종속성입니다. 예약된 작업을 다른 작업에 종속되게 만드는 기본 제공 방법은 없지만 서비스를 사용하면 가능합니다. 또 다른 영역은 이벤트 로깅입니다. 많은 애플리케이션이 필요한 경우 자체 로그를 유지하고 실행할 다른 애플리케이션에 의존하지 않기 때문에 이들 중 어느 것도 귀하의 사용 사례에 유용하지 않을 것이라고 생각합니다.

둘 다 실패 후 복구/재시작 옵션이 있습니다.

서비스 회복

예약된 작업 복구

둘 다 시작 후 시작이 지연되도록 구성할 수 있습니다.

서비스 시작 지연

예약된 작업 시작 지연

답변2

때로는 Google이 유용하기 때문에 의견을 남길 수 있지만 오래 전에도 같은 것을 달성하고 싶었습니다. 이 경우에는 Windows Server 2003용 리소스 키트를 사용했습니다. 여기에는 서비스를 생성하는 도구가 포함되어 있었습니다. 아쉽게도 당시 제가 사용하고 있던 제품에 대한 정보는 찾을 수 없습니다 *.

그래도 Google 검색에는 많은 결과가 표시됩니다.

1) 사용sc.exe https://support.microsoft.com/en-us/help/251192/how-to-create-a-windows-service-by-using-sc-exe

https://stackoverflow.com/questions/3663331/when-creating-a-service-with-sc-exe-how-to-pass-in-context-parameters

예는 다음과 같습니다.

C:\Documents and Settings\Administrator> sc create asperacentral binPath= "C:\Program Files\Aspera\Enterprise Server\bin\Debug\asperacentral.exe" DisplayName= "Aspera Central" start= auto

2) 사용 *svrany: 제가 사용하던 도구였는데, 방금 기억이 나네요. 하지만 지금은 꽤 오래되었으므로 사용을 권장하지 않습니다. 그래도 여전히 작동한다고 생각합니다(Windows 7에서는 작동합니다).

3) 사용 srvstart.exe: https://www.rozanski.org.uk/software

얼마 전에 들었지만 한 번도 사용한 적이 없는 도구입니다.

sc.exe다른 방법도 많이 있을 거라 확신하지만, 저는 방법 1을 시도해 보겠습니다 .

답변3

Windows 작업 스케줄러로 실행되는 응용 프로그램의 우선 순위를 변경하는 것은 까다롭습니다. 하지만 서비스에 대해서는 잘 모르겠습니다.

관련 정보