如何用零程式碼將應用封裝成服務-NSSM
引言
NSSM是什麼?借用官方標題"NSSM - the Non-Sucking Service Manager",NSSM - 非吸吮服務經理。實際上NSSM是一個服務封裝程式,它可以將普通exe程式封裝成服務,使之像windows服務一樣執行。
常用命令
1、安裝服務
nssm install 服務名稱 應用程式路徑 引數
Tips:如果nssm跟應用程式在同一目錄只需應用名稱帶上字尾.exe,如果不在同一目錄需完整路徑,如:"C:\Program Files\app.exe")
2、刪除服務
nssm remove 服務名稱
Tips:此命令會彈出nssm窗體詢問是否確認關閉,如下圖
3、刪除服務並確定
nssm remove 服務名稱 confirm
4、修改服務
nssm edit 服務名稱
Tips:此命令會彈出nssm窗體進行操作,如下圖
5、啟動服務
nssm start 服務名稱
6、停止服務
nssm stop 服務名稱
7、重啟服務
nssm restart 服務名稱
小試牛刀
1、在當前目錄路徑欄輸入cmd回車
2、輸入命令:nssm install TestService
3、在彈出的窗體中進行視覺化配置
實際運用
在實際運用過程中,肯定不是讓使用者去執行這些命令,所以這裡以bat批處理作為演示
1、首先準備好nssm程式和即將要被封裝成服務的應用程式,官網下載地址:
2、編寫批處理指令碼
簡單講解下上面指令碼意思:
第一行:批處理語法,大概意思就是關閉回顯
第二行:停止服務
第三行:刪除服務並確認
第四行:將"webrtc-streamer.exe"這個應用程式封裝成名為"TestService"的服務,並給應用程式傳遞了引數"-H 0.0.0.0:8005"
第五行:啟動服務
有同學就要問了,直接安裝服務再啟動不就完了,兩行解決。是的,確實可以,為了安裝穩妥起見防止發生衝突,先停服務刪除服務再安裝再啟動。
3、執行批處理,開啟Windows服務控制檯,即可看到服務已經正常運行了。做成批處理之後還可被其它程式呼叫執行,或者在安裝包裡做一些操作,安裝完執行該指令碼。
值得注意的是nssm自帶程序守護功能,被做成服務的應用程式掛掉它會自動再次跑起來,簡直是打不死的小強,看下面動態圖,可以看出我直接結束掉該程序,直接就會再次起來,PID有變化。
結束語
實際上功能還有很多,比如I/0重定向日誌輸出等等,具體用法可以參考官網介紹:http://www.nssm.cc/