多年來,每當我需要將應用程式作為 Windows 服務執行時,我都會使用 sc.exe 或 NSSM。它們雖然能用,但都存在一些限制,在實際專案中會變得很痛苦:

  • sc.exe始終預設將 C:\Windows\System32 作為工作目錄,這會破壞依賴相對路徑或本機配置的應用程式。

  • NSSM重量輕,但缺乏監控、日誌輪換,並且只有最少的 UI。

  • WinSW是可配置的,但基於 XML,並且對於快速設定來說不太方便。

在多次遇到這些問題之後,我決定建立自己的工具:Servy。

目標

我想要的解決方案是:

  • 易於使用,具有簡潔的使用者介面,還可以透過 CLI 編寫腳本實現自動化。

  • 足夠靈活,可以執行任何應用程式(Node.js、Python、.NET、腳本等)。

  • 內建日誌記錄、健康檢查、恢復和重啟策略,功能強大

  • 相容於多種 Windows 版本(從 Windows 7 到 11,以及伺服器版本)。

一路上的挑戰

  • 工作目錄處理:確保服務使用正確的啟動資料夾執行,不受駭客攻擊。

  • 日誌管理:將 stdout/stderr 重新導向到文件,但進行輪換以避免無限增長。

  • 健康監測:新增檢查,以便服務在出現問題時可以自動重新啟動或恢復。

  • UI 設計:平衡簡單性(適合休閒使用)和進階選項(適合專業人士)。

結果

Servy就是為此而生的。它是一款開源工具,可將任何應用程式轉換為原生 Windows 服務,並結合現代 GUI 和 CLI 實現自動化。 Servy 的設計初衷是既易於使用,又功能強大,足以滿足生產環境的需求。

GitHub: github.com/aelassas/servy

示範影片

{% 嵌入 https://www.youtube.com/watch?v=biHq17j4RbI

%}

入門

安裝 Servy 有兩種方式:手動下載並安裝,或使用 WinGet 或 Chocolatey 等套件管理器。

確保您已安裝WinGetChocolatey

從命令提示字元或 PowerShell 以管理員身分執行以下命令之一:

溫蓋特

winget install servy

巧克力口味

choco install -y servy

快速連結

特徵

  • 乾淨、簡單的使用者介面

  • 使用 Servy Manager 快速監控並管理所有已安裝的服務

  • 用於完整腳本和自動化部署的 CLI

  • 將任何可執行檔作為 Windows 服務執行

  • 設定服務名稱、描述、啟動類型、優先權、工作目錄、環境變數、依賴項和參數

  • 環境變數和流程參數均支援環境變數擴展

  • 以本機系統、本機使用者或網域帳戶執行服務

  • 將 stdout/stderr 重新導向到具有基於大小的自動輪換的日誌文件

  • 在啟動服務之前執行預啟動腳本,包括重試、逾時、日誌記錄和故障處理

  • 透過改進的生命週期管理和確保資源清理來防止孤立/殭屍進程

  • 健康檢查和自動服務恢復

  • 即時監控和管理服務

  • 按等級、日期和關鍵字瀏覽和搜尋日誌,以便更快地從 Servy Manager 進行故障排除

  • 匯出/導入服務配置

  • 透過 Windows 通知和電子郵件發出服務事件通知警報

  • 與 Windows 7–11 x64 和 Windows Server 版本相容

貢獻

Servy 完全開源,我們歡迎各種貢獻!無論是修復錯誤、加入新功能、改進文件,還是分享創意,您的幫助都能讓 Servy 變得更好,造福所有人。

您可以透過以下方式做出貢獻:

  • GitHub上提交拉取請求

  • 開啟問題報告錯誤或請求功能

  • 參與討論並提供回饋

每一份貢獻都很重要-幫助我們讓執行 Windows 服務變得更簡單、更可靠、更愉快!


原文出處:https://dev.to/aelassas/why-i-built-servy-a-modern-open-source-alternative-to-nssmwinsw-kbm


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝10   💬6   ❤️11
448
🥈
我愛JS
📝1   💬6   ❤️4
93
🥉
AppleLily
📝1   💬4   ❤️1
46
#4
💬2  
6
#5
💬1  
5
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次