Windows 服務:指定自訂停止命令

Windows 服務:指定自訂停止命令

我們有一個自訂應用程序,它與大量第三方資源混在一起。當終止時,我們需要優雅地「放棄租約」。

該應用程式本身是用 .NET Core 編寫的(並以真正的多平台運行能力為目標)。我們ExecStop在 Linux 中使用 Systemd 的機制來呼叫我們的自訂幫助程式腳本 ( myapp cli shutdown)。

這個幫助程序腳本也存在於 Windows 中,但我們不確定如何將其與 Windows 的服務管理實際結合。我們使用 NSSM 來保持服務本身的持續運行,但如果可以實現這一點,我們願意接受各種選擇。

我嘗試在 Windows 上用谷歌搜尋/搜尋 StackExchange 有關自訂停止命令的信息,但結果是空的。

有誰知道我們如何才能實現這一目標?

答案1

NSSM 的“關機”選項卡設定控制服務收到停止請求時發生的情況。 Control-C 和終止進程選項不太可能有用,但由於您的應用程式位於 .NET 中,因此它應該能夠接收和回應WM_CLOSE和/或WM_QUIT.我想這在 .NET Core 中也是可能的,儘管我不確定細節。

Apache 共享守護程式可能更適合你。儘管它主要是為用 Java 編寫的服務而設計的,但它也可以運行任意可執行文件,並且該--StopImage選項允許您在服務收到停止請求時運行命令列。

然而,如果您的應用程式實際上是一個服務,而不是使用 NSSM 或 Apache Commons Daemon 等第三方包裝器,那就更優雅了。這在 .NET 中很容易,在 .NET Core 中更難,但 Google 搜尋出現了如何使用 Visual Studio 2017 建立 .NET Core Windows 服務這應該可以幫助你開始。

如果您需要有關直接實現服務的更多詳細信息,您可能應該在 Stack Overflow 上詢問,因為這更多的是關於 Windows 程式設計而不是系統管理。

相關內容