Windows 서비스: 사용자 정의 중지 명령 지정

Windows 서비스: 사용자 정의 중지 명령 지정

우리는 많은 타사 리소스를 망쳐놓는 맞춤형 애플리케이션을 보유하고 있습니다. 종료할 때는 말하자면 "임대를 포기"해야 합니다.

앱 자체는 .NET Core로 작성되었으며 진정한 다중 플랫폼 실행 기능을 목표로 합니다. 우리는 Linux에서 Systemd의 ExecStop메커니즘을 사용하여 사용자 정의 도우미 스크립트( myapp cli shutdown)를 호출합니다.

해당 도우미 스크립트는 Windows에도 존재하지만 이를 Windows 서비스 관리와 실제로 연결하는 방법은 확실하지 않습니다. 우리는 NSSM을 사용하여 서비스 자체를 지속적으로 유지하지만 이것이 가능하다면 옵션이 열려 있습니다.

Windows의 사용자 정의 중지 명령에 대해 인터넷 검색/StackExchange 검색을 시도했지만 비어 있습니다.

우리가 이것을 어떻게 해낼 수 있는지 아는 사람 있나요?

답변1

NSSM"종료" 탭 설정서비스가 중지 요청을 받으면 어떻게 되는지 제어합니다. Control-C 및 Terminate 프로세스 옵션은 유용하지 않을 것 같지만 애플리케이션이 .NET에 있으므로 WM_CLOSE및/또는 를 수신하고 응답할 수 있어야 합니다 WM_QUIT. 자세한 내용은 잘 모르겠지만 .NET Core에서도 이것이 가능하다고 생각합니다.

그만큼아파치 커먼즈 데몬당신에게 더 잘 맞을 수도 있어요. 주로 Java로 작성된 서비스용으로 설계되었지만 임의의 실행 파일도 실행할 수 있으며 옵션을 사용하면 --StopImage서비스가 중지 요청을 받을 때 명령줄을 실행할 수 있습니다.

그러나 NSSM이나 Apache Commons Daemon과 같은 타사 래퍼를 사용하는 것보다 애플리케이션이 실제로 서비스가 되는 것이 더 우아할 것입니다. .NET에서는 쉽고 .NET Core에서는 어렵지만 Google 검색 결과가 나왔습니다.Visual Studio 2017을 사용하여 .NET Core Windows 서비스를 만드는 방법시작해야합니다.

서비스를 직접 구현하는 방법에 대한 자세한 내용이 필요한 경우 스택 오버플로에 문의해야 합니다. 이는 시스템 관리보다는 Windows 프로그래밍에 관한 것이기 때문입니다.

관련 정보