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> AppAllowServiceLogon
和nssm 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 設定服務的登入賬號和許可權
nssm set <ServiceName> ObjectName "<AccountName>"
示例:
nssm set MyServiceName ObjectName "DOMAIN\User"
1.2 配置服務的安全選項
nssm set <ServiceName> AppAllowServiceLogon
nssm set <ServiceName> AppDisallowInteractiveLogon
2. 高階啟動選項
2.1 啟動和恢復選項
nssm set <ServiceName> Start SERVICE_*
示例:
nssm set MyServiceName Start SERVICE_AUTO_START
2.2 設定服務啟動和失敗時的操作
nssm set <ServiceName> AppRestartDelay <Seconds>
nssm set <ServiceName> AppFailureActions <ResetPeriod> <RebootMsg>
3. 程序控制和監控
3.1 監控和重啟服務程序
nssm set <ServiceName> AppRotateFiles <FileSize> <FileCount>
示例:
nssm set MyServiceName AppRotateFiles 1024 5
3.2 控制服務程序優先順序
nssm set <ServiceName> AppPriority <Priority>
示例:
nssm set MyServiceName AppPriority HIGH
4. 故障排除和日誌記錄
4.1 配置詳細日誌記錄
nssm set <ServiceName> AppStdout <LogFilePath>
nssm set <ServiceName> AppStderr <LogFilePath>
示例:
nssm set MyServiceName AppStdout C:\Logs\stdout.log
nssm set MyServiceName AppStderr C:\Logs\stderr.log
4.2 檢視服務狀態和日誌
nssm status <ServiceName>
5. 擴充套件和自定義選項
5.1 利用 NSSM 的擴充套件功能
NSSM 支援使用外掛和擴充套件來增強其功能,可以根據需求進行定製和配置。
這些命令和示例展示瞭如何使用 NSSM 進行更高階的服務管理和配置。每個命令都有其具體的引數和用法,可以根據實際需求進行調整和應用。
NSSM 的專家級應用,可以深入探索更復雜和高階的功能和配置選項。以下是 NSSM 專家級應用的大綱和命令示例:
1. 程序控制和監控
1.1 控制服務程序的優先順序和親和性
nssm set <ServiceName> AppPriority <Priority>
nssm set <ServiceName> AppAffinity <AffinityMask>
示例:
nssm set MyServiceName AppPriority HIGH
nssm set MyServiceName AppAffinity 0x1 ; 使用第一個 CPU 核心
1.2 設定服務的程序 CPU 和記憶體限制
nssm set <ServiceName> AppCPUTimeLimit <Seconds>
nssm set <ServiceName> AppMemoryLimit <Bytes>
示例:
nssm set MyServiceName AppCPUTimeLimit 3600 ; 限制服務執行的 CPU 時間為 3600 秒
nssm set MyServiceName AppMemoryLimit 536870912 ; 限制服務佔用的記憶體為 512 MB
2. 高階日誌和除錯選項
2.1 配置詳細的除錯日誌
nssm set <ServiceName> AppEnvironmentAppend <VariableName>=<Value>
nssm set <ServiceName> AppStopMethodSkip <Method>
示例:
nssm set MyServiceName AppEnvironmentAppend DEBUG=1 ; 設定環境變數以啟用除錯模式
nssm set MyServiceName AppStopMethodSkip 5 ; 忽略停止方法 5 的呼叫,用於特定的停止場景處理
3. 多例項和負載均衡配置
3.1 配置多例項和服務互斥
nssm set <ServiceName> AppInstances <Number>
nssm set <ServiceName> AppMutex <MutexName>
示例:
nssm set MyServiceName AppInstances 5 ; 設定服務的最大例項數為 5
nssm set MyServiceName AppMutex MyServiceMutex ; 指定服務的互斥物件名稱
4. 高階安全和許可權設定
4.1 配置服務的安全描述符和許可權
nssm set <ServiceName> AppSecurityDescriptor <DescriptorString>
nssm set <ServiceName> AppServiceSidType <SidType>
示例:
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 控制服務程序的優先順序和親和性
nssm set <ServiceName> AppPriority <Priority>
nssm set <ServiceName> AppAffinity <AffinityMask>
示例:
nssm set MyServiceName AppPriority HIGH
nssm set MyServiceName AppAffinity 0x1 ; 將服務限制在第一個 CPU 核心上
1.2 設定服務的程序 CPU 和記憶體限制
nssm set <ServiceName> AppCPUTimeLimit <Seconds>
nssm set <ServiceName> AppMemoryLimit <Bytes>
示例:
nssm set MyServiceName AppCPUTimeLimit 3600 ; 限制服務執行的 CPU 時間為 3600 秒
nssm set MyServiceName AppMemoryLimit 536870912 ; 限制服務佔用的記憶體為 512 MB
2. 高階日誌和除錯選項
2.1 配置詳細的除錯日誌
nssm set <ServiceName> AppStdout <LogFile>
nssm set <ServiceName> AppStderr <LogFile>
示例:
nssm set MyServiceName AppStdout C:\Logs\MyService_stdout.log ; 將標準輸出重定向到指定檔案
nssm set MyServiceName AppStderr C:\Logs\MyService_stderr.log ; 將標準錯誤輸出重定向到指定檔案
3. 高階安全和許可權設定
3.1 配置服務的安全描述符和許可權
nssm set <ServiceName> AppSecurityDescriptor <DescriptorString>
nssm set <ServiceName> AppRotateFiles <True/False>
示例:
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 配置多例項和服務互斥
nssm set <ServiceName> AppInstances <Number>
nssm set <ServiceName> AppMutex <MutexName>
示例:
nssm set MyServiceName AppInstances 5 ; 設定服務的最大例項數為 5
nssm set MyServiceName AppMutex MyServiceMutex ; 指定服務的互斥物件名稱
5. 擴充套件和自定義選項
5.1 使用 NSSM 外掛和擴充套件
NSSM 支援使用第三方外掛和自定義擴充套件,以增強服務的功能和定製選項。
這些命令和示例展示瞭如何在 NSSM 中利用頂尖級的功能進行服務管理和配置,適用於需要高度靈活性和可配置性的場景。根據具體需求,可以深入探索和調整這些選項,以實現最佳的服務部署和管理效果。