NSSM是一個服務封裝程序,它可以將普通exe程序封裝成服務,使之像windows服務一樣運行。同類型的工具還有微軟自己的srvany,不過nssm更加簡單易用,並且功能強大。它的特點如下:
-
支持普通exe程序(控制台程序或者帶界面的Windows程序都可以)
-
安裝簡單,修改方便
-
可以重定向輸出(並且支持Rotation)
-
可以自動守護封裝了的服務,程序掛掉了后可以自動重啟
-
可以自定義環境變量
這里面的每一個功能都非常實用,使用NSSM來封裝服務可以大大簡化我們的開發流程了。
-
開發的時候是一個普通程序,降低了開發難度,調試起來非常方便
-
安裝簡單,並且可以隨時修改服務屬性,更新也更加方便
-
可以利用控制台輸出直接實現一個簡單的日志系統
-
不用考慮再加一個服務實現服務守護功能
我覺得它還可以需要增加的一個功能是將輸入輸出重定向為一個tcp連接,這樣可以通過telnet的方式實現程序的交互了,那樣就更加好用了。
下面就簡單的介紹一下如何使用這個工具。
首先去nssm的官網下載
服務安裝:
服務安裝可以使用如下命令: nssm install <servicename>
執行此命令后,會出現一個界面,基本上看着就知道怎么用了,大多數情況下,只需要填第一個界面的程序路徑就可以了。
其它界面的是高級參數的配置,可以根據需要自行選擇。
參數填完后執行"install service"按鈕即可將服務安裝到系統,可以使用系統的服務管理工具查看了。
當然,如果要自動化安裝,可以直接帶上程序路徑: nssm install <servicename> <program> [<arguments>]
NSSM本身win7及以上的系統基本都是支持的,我測試過win7,2008,2016系統,都是沒有問題的,如果安裝失敗,請首先檢查是否裝了某國產管家或國產殺毒軟件。
安裝完成后,服務還沒有啟動,需要通過下面的服務管理的命令啟動服務。
服務管理:
服務管理主要有啟動、停止和重啟,其命令如下:
-
啟動服務: nssm start <servicename>
-
停止服務: nssm stop <servicename>
-
重啟服務: nssm restart <servicename>
當然,也可以使用系統自帶的服務管理器操作和使用系統的命令。
修改參數:
NSSM安裝的服務修改起來非常方便,命令如下:
nssm edit <servicename>
會自動啟動操作界面,直接更改即可。
服務刪除:
服務刪除可以使用如下命令之一:
-
nssm remove <servicename>
-
nssm remove <servicename> confirm
功能沒有大的區別,后面的命令是自動確認的,沒有交互界面。
命令行:
服務自動化需要使用更多的命令行,具體參看官方文檔: Managing services from the command line
如下是一個安裝Jenkins服務的示例:
nssm install Jenkins %PROGRAMFILES%\Java\jre7\bin\java.exe
nssm set Jenkins AppParameters -jar slave.jar -jnlpUrl https://jenkins/computer/%COMPUTERNAME%/slave-agent.jnlp -secret redacted
nssm set Jenkins AppDirectory C:\Jenkins
nssm set Jenkins AppStdout C:\Jenkins\jenkins.log
nssm set Jenkins AppStderr C:\Jenkins\jenkins.log
nssm set Jenkins AppStopMethodSkip 6
nssm set Jenkins AppStopMethodConsole 1000
nssm set Jenkins AppThrottle 5000
nssm start Jenkins
其它教程:
這里找了網上一些關於nssm的使用教程,感興趣的朋友可以參考一下: