NSSM(Non-Sucking Service Manager)是一個開源的 Windows 服務管理工具,它可以幫助使用者將任何可執行程式轉換為一個 Windows 服務。下面是 NSSM 的初級使用教程大綱,包括基本命令和使用方式:

suv789發表於2024-06-29

NSSM(Non-Sucking Service Manager)是一個開源的 Windows 服務管理工具,它可以幫助使用者將任何可執行程式轉換為一個 Windows 服務。下面是 NSSM 的初級應用大綱,包括基本命令和使用方式:

1. 安裝 NSSM

  • 下載 NSSM 的最新版本安裝包。
  • 解壓安裝包,並將 nssm.exe 複製到一個方便訪問的路徑,如 C:\nssm\

2. 建立和管理服務

建立新服務

  • 開啟命令提示符 (cmd.exe) 或 PowerShell。
  • 使用 nssm install <ServiceName> 命令來建立一個新的服務。
    • 示例:nssm install MyServiceName
  • 彈出一個圖形介面,可以設定服務的詳細資訊,如路徑、啟動引數、工作目錄等,也可以在命令列中直接配置。

刪除服務

  • 使用 nssm remove <ServiceName> 命令來刪除一個已存在的服務。
    • 示例:nssm remove MyServiceName

3. 配置服務

設定服務的可執行程式

  • 在 NSSM 的配置介面或命令列中指定要作為服務執行的可執行檔案的路徑。
    • 示例:nssm set MyServiceName ApplicationPath "C:\path\to\executable.exe"

設定服務的啟動引數和工作目錄

  • 使用 nssm set <ServiceName> 命令來配置服務的啟動引數和工作目錄。
    • 示例:nssm set MyServiceName AppParameters "-param1 value1"
    • 示例:nssm set MyServiceName AppDirectory "C:\path\to\working\directory"

配置服務的啟動型別和使用者許可權

  • 使用 nssm set <ServiceName> 命令來設定服務的啟動型別(自動、手動、禁用)和登入賬號。
    • 示例:nssm set MyServiceName Start SERVICE_AUTO_START
    • 示例:nssm set MyServiceName ObjectName "LocalSystem"

4. 啟動和停止服務

  • 使用 nssm start <ServiceName> 命令來啟動服務。
    • 示例:nssm start MyServiceName
  • 使用 nssm stop <ServiceName> 命令來停止服務。
    • 示例:nssm stop MyServiceName

5. 檢視和除錯服務

  • 使用 nssm status <ServiceName> 命令來檢視服務的當前狀態。
    • 示例:nssm status MyServiceName
  • 使用 nssm restart <ServiceName> 命令來重新啟動服務。
    • 示例:nssm restart MyServiceName

6. 日誌和錯誤處理

  • NSSM 會生成日誌檔案以記錄服務的執行狀態和錯誤資訊,通常位於服務安裝目錄下的 nssm.log 檔案中。可用於排查服務啟動或執行時的問題。

注意事項

  • 確保以管理員身份執行命令提示符或 PowerShell。
  • 在使用 NSSM 建立服務時,務必詳細閱讀和理解 NSSM 提供的各個配置選項,特別是路徑、許可權、啟動型別等設定,以確保服務能夠按預期執行。

以上是 NSSM 初級應用的基本大綱和命令示例,希望能夠幫助您理解如何使用 NSSM 管理 Windows 服務。


NSSM 中級應用大綱

NSSM(Non-Sucking Service Manager)提供了豐富的功能和選項,用於更高階的 Windows 服務管理和配置。以下是 NSSM 中級應用的大綱,涵蓋了更復雜和深入的任務和配置:

1. 安全和許可權設定

設定服務的登入賬號和許可權

  • 使用 nssm set <ServiceName> ObjectName "<AccountName>" 命令來指定服務執行時的登入賬號。
    • 示例:nssm set MyServiceName ObjectName "DOMAIN\User"

配置服務的安全選項

  • 使用 nssm set <ServiceName> AppAllowServiceLogonnssm set <ServiceName> AppDisallowInteractiveLogon 命令來配置服務的允許服務登入和禁止互動登入選項。

2. 高階啟動選項

啟動和恢復選項

  • 使用 nssm set <ServiceName> Start SERVICE_* 命令來設定服務的啟動型別,如自動啟動、手動啟動或禁用。
    • 示例:nssm set MyServiceName Start SERVICE_AUTO_START

設定服務啟動和失敗時的操作

  • 使用 nssm set <ServiceName> AppRestartDelay <Seconds>nssm set <ServiceName> AppFailureActions <ResetPeriod> <RebootMsg> 命令來配置服務的重啟延遲和失敗操作選項。

3. 程序控制和監控

監控和重啟服務程序

  • 使用 nssm set <ServiceName> AppRotateFiles 命令來設定在達到檔案大小限制時輪轉日誌檔案。
    • 示例:nssm set MyServiceName AppRotateFiles <FileSize> <FileCount>

控制服務程序優先順序

  • 使用 nssm set <ServiceName> AppPriority <Priority> 命令來設定服務程序的優先順序。
    • 示例:nssm set MyServiceName AppPriority HIGH

4. 故障排除和日誌記錄

配置詳細日誌記錄

  • 使用 nssm set <ServiceName> AppStdout <LogFilePath>nssm set <ServiceName> AppStderr <LogFilePath> 命令來設定服務的標準輸出和錯誤輸出的日誌檔案路徑。

檢視服務狀態和日誌

  • 使用 nssm status <ServiceName> 命令來檢視服務的當前狀態和執行日誌,以便快速診斷和故障排除。

5. 擴充套件和自定義選項

利用 NSSM 的擴充套件功能

  • NSSM 支援使用外掛和擴充套件來增強其功能,可以根據需求進行定製和配置。

這些是 NSSM 中級應用的主要大綱和命令示例,希望能幫助您更深入地理解和使用 NSSM 進行復雜的 Windows 服務管理和配置。


NSSM 進行高階應用時,可以探索一些更復雜和深入的功能和配置選項。以下是 NSSM 高階應用的大綱和命令示例:

1. 安全和許可權設定

1.1 設定服務的登入賬號和許可權

plaintextCopy Code
nssm set <ServiceName> ObjectName "<AccountName>"

示例:

plaintextCopy Code
nssm set MyServiceName ObjectName "DOMAIN\User"

1.2 配置服務的安全選項

plaintextCopy Code
nssm set <ServiceName> AppAllowServiceLogon
nssm set <ServiceName> AppDisallowInteractiveLogon

2. 高階啟動選項

2.1 啟動和恢復選項

plaintextCopy Code
nssm set <ServiceName> Start SERVICE_*

示例:

plaintextCopy Code
nssm set MyServiceName Start SERVICE_AUTO_START

2.2 設定服務啟動和失敗時的操作

plaintextCopy Code
nssm set <ServiceName> AppRestartDelay <Seconds>
nssm set <ServiceName> AppFailureActions <ResetPeriod> <RebootMsg>

3. 程序控制和監控

3.1 監控和重啟服務程序

plaintextCopy Code
nssm set <ServiceName> AppRotateFiles <FileSize> <FileCount>

示例:

plaintextCopy Code
nssm set MyServiceName AppRotateFiles 1024 5

3.2 控制服務程序優先順序

plaintextCopy Code
nssm set <ServiceName> AppPriority <Priority>

示例:

plaintextCopy Code
nssm set MyServiceName AppPriority HIGH

4. 故障排除和日誌記錄

4.1 配置詳細日誌記錄

plaintextCopy Code
nssm set <ServiceName> AppStdout <LogFilePath>
nssm set <ServiceName> AppStderr <LogFilePath>

示例:

plaintextCopy Code
nssm set MyServiceName AppStdout C:\Logs\stdout.log
nssm set MyServiceName AppStderr C:\Logs\stderr.log

4.2 檢視服務狀態和日誌

plaintextCopy Code
nssm status <ServiceName>

5. 擴充套件和自定義選項

5.1 利用 NSSM 的擴充套件功能

NSSM 支援使用外掛和擴充套件來增強其功能,可以根據需求進行定製和配置。

這些命令和示例展示瞭如何使用 NSSM 進行更高階的服務管理和配置。每個命令都有其具體的引數和用法,可以根據實際需求進行調整和應用。


NSSM 的專家級應用,可以深入探索更復雜和高階的功能和配置選項。以下是 NSSM 專家級應用的大綱和命令示例:

1. 程序控制和監控

1.1 控制服務程序的優先順序和親和性

plaintextCopy Code
nssm set <ServiceName> AppPriority <Priority>
nssm set <ServiceName> AppAffinity <AffinityMask>

示例:

plaintextCopy Code
nssm set MyServiceName AppPriority HIGH
nssm set MyServiceName AppAffinity 0x1  ; 使用第一個 CPU 核心

1.2 設定服務的程序 CPU 和記憶體限制

plaintextCopy Code
nssm set <ServiceName> AppCPUTimeLimit <Seconds>
nssm set <ServiceName> AppMemoryLimit <Bytes>

示例:

plaintextCopy Code
nssm set MyServiceName AppCPUTimeLimit 3600  ; 限制服務執行的 CPU 時間為 3600 秒
nssm set MyServiceName AppMemoryLimit 536870912  ; 限制服務佔用的記憶體為 512 MB

2. 高階日誌和除錯選項

2.1 配置詳細的除錯日誌

plaintextCopy Code
nssm set <ServiceName> AppEnvironmentAppend <VariableName>=<Value>
nssm set <ServiceName> AppStopMethodSkip <Method>

示例:

plaintextCopy Code
nssm set MyServiceName AppEnvironmentAppend DEBUG=1  ; 設定環境變數以啟用除錯模式
nssm set MyServiceName AppStopMethodSkip 5  ; 忽略停止方法 5 的呼叫,用於特定的停止場景處理

3. 多例項和負載均衡配置

3.1 配置多例項和服務互斥

plaintextCopy Code
nssm set <ServiceName> AppInstances <Number>
nssm set <ServiceName> AppMutex <MutexName>

示例:

plaintextCopy Code
nssm set MyServiceName AppInstances 5  ; 設定服務的最大例項數為 5
nssm set MyServiceName AppMutex MyServiceMutex  ; 指定服務的互斥物件名稱

4. 高階安全和許可權設定

4.1 配置服務的安全描述符和許可權

plaintextCopy Code
nssm set <ServiceName> AppSecurityDescriptor <DescriptorString>
nssm set <ServiceName> AppServiceSidType <SidType>

示例:

plaintextCopy Code
nssm set MyServiceName AppSecurityDescriptor "D:(A;;GA;;;S-1-5-32-544)(A;;GA;;;BA)(A;;GRGWGX;;;WD)"
nssm set MyServiceName AppServiceSidType Unrestricted  ; 設定服務的安全標識型別為無限制

5. 擴充套件和自定義選項

5.1 使用 NSSM 外掛和擴充套件

NSSM 支援使用第三方外掛和自定義擴充套件,以增強服務的功能和定製選項。

這些命令和示例展示瞭如何在 NSSM 中進行專家級的服務管理和配置,涵蓋了更復雜的需求和高階的操作。根據實際情況,可以靈活調整和應用這些功能,以滿足特定的服務部署和管理要求。


NSSM(Non-Sucking Service Manager)進行頂尖級應用時,可以探索一些高階的功能和配置選項,以實現更靈活和強大的服務管理。以下是 NSSM 的頂尖級應用大綱,涵蓋了高階功能和相關命令示例:

1. 程序控制和監控

1.1 控制服務程序的優先順序和親和性

plaintextCopy Code
nssm set <ServiceName> AppPriority <Priority>
nssm set <ServiceName> AppAffinity <AffinityMask>

示例:

plaintextCopy Code
nssm set MyServiceName AppPriority HIGH
nssm set MyServiceName AppAffinity 0x1  ; 將服務限制在第一個 CPU 核心上

1.2 設定服務的程序 CPU 和記憶體限制

plaintextCopy Code
nssm set <ServiceName> AppCPUTimeLimit <Seconds>
nssm set <ServiceName> AppMemoryLimit <Bytes>

示例:

plaintextCopy Code
nssm set MyServiceName AppCPUTimeLimit 3600  ; 限制服務執行的 CPU 時間為 3600 秒
nssm set MyServiceName AppMemoryLimit 536870912  ; 限制服務佔用的記憶體為 512 MB

2. 高階日誌和除錯選項

2.1 配置詳細的除錯日誌

plaintextCopy Code
nssm set <ServiceName> AppStdout <LogFile>
nssm set <ServiceName> AppStderr <LogFile>

示例:

plaintextCopy Code
nssm set MyServiceName AppStdout C:\Logs\MyService_stdout.log  ; 將標準輸出重定向到指定檔案
nssm set MyServiceName AppStderr C:\Logs\MyService_stderr.log  ; 將標準錯誤輸出重定向到指定檔案

3. 高階安全和許可權設定

3.1 配置服務的安全描述符和許可權

plaintextCopy Code
nssm set <ServiceName> AppSecurityDescriptor <DescriptorString>
nssm set <ServiceName> AppRotateFiles <True/False>

示例:

plaintextCopy Code
nssm set MyServiceName AppSecurityDescriptor "D:(A;;GA;;;S-1-5-32-544)(A;;GA;;;BA)(A;;GRGWGX;;;WD)"  ; 配置服務的安全描述符
nssm set MyServiceName AppRotateFiles true  ; 啟用日誌檔案輪換功能

4. 多例項和負載均衡配置

4.1 配置多例項和服務互斥

plaintextCopy Code
nssm set <ServiceName> AppInstances <Number>
nssm set <ServiceName> AppMutex <MutexName>

示例:

plaintextCopy Code
nssm set MyServiceName AppInstances 5  ; 設定服務的最大例項數為 5
nssm set MyServiceName AppMutex MyServiceMutex  ; 指定服務的互斥物件名稱

5. 擴充套件和自定義選項

5.1 使用 NSSM 外掛和擴充套件

NSSM 支援使用第三方外掛和自定義擴充套件,以增強服務的功能和定製選項。

這些命令和示例展示瞭如何在 NSSM 中利用頂尖級的功能進行服務管理和配置,適用於需要高度靈活性和可配置性的場景。根據具體需求,可以深入探索和調整這些選項,以實現最佳的服務部署和管理效果。


相關文章