Windows系統服務自動注冊程序工具WinSW
概述
在現實生活中,使用Windows系統的電腦的時候,可能會遇到這么一種情況:想把一些應用程序添加為開機啟動項。對于有圖形界面的應用程序,一般不存在問題。但是如果想運行命令行應用程序,就不是那么方便了。一種笨辦法就是寫個bat,放到啟動文件夾里,就可以開機啟動了。開機之后,你就會發現,這樣會一直顯示著一個CMD窗口,而且這個窗口不能關,關了程序就停了。
其實Windows系統自帶后臺程序管理的功能,也就是我們經常用到的服務。但是Windows的服務只有程序的開發者在寫程序的時候引用到這個功能,才能利用服務來控制程序的啟動和關閉。對于一般的命令行程序來說,沒辦法利用服務。
今天我們要介紹的WinSW,它就是一個可以將Windows上的任何一個程序注冊為服務的工具。同樣也可以進行卸載該服務。
安裝
首先要下載winsw。它是一個單個的可執行文件,我們到Github release這里就可以下載winsw了。一般來說當然是下載最新的。winsw可以運行在.NET2和.NET4兩個版本上,當然如果使用Win10等比較新的系統。
下載地址:https://github.com/winsw/winsw/releases
這里我們下載v2.12.0版本,下載鏈接地址
https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exe
配置文件
這里我們將WinSW.exe放到E:\service目錄下,然后在WinSW.exe同級的目錄下,新建winsw.xml文件,輸入以下內容。
winsw.xml文件內容
<?xml version="1.0" encoding="UTF-8" ?>
<service>
<id>TinywanFrpServer0.54.0</id>
<name>Tinywan Frp Server 0.54.0 </name>
<description>This service runs frp reverse proxy.</description>
<executable>E:\frp_0.54.0_windows_amd64\frpc.exe</executable>
<arguments>-c E:\frp_0.54.0_windows_amd64\frpc.toml</arguments>
<logmode>reset</logmode>
</service>
最終E:\service目錄下配置和可執行文件
WinSW.exe winsw.xml
注冊服務
配置文件編寫完之后,將配置文件與WinSW.exe放在同一目錄中。注意對應WinSW.exe的配置文件名稱應該是WinSW.xml。此時,WinSW.exe、WinSW.xml以及你的應用程序應該都是在同一目錄中。然后用管理員權限打開一個命令提示符窗口,cd進入到應用程序所在目錄,可以通過輸入下面的命令來進行控制應用程序對應的服務:
然后打開管理員權限命令提示符,使用下面的命令安裝。
$ ./WinSW.exe install
2024-08-29 14:56:43,604 INFO - Installing service 'Tinywan Frp Server 0.54.0 (TinywanFrpServer0.54.0)'...
2024-08-29 14:56:43,648 INFO - Service 'Tinywan Frp Server (frp)' was installed successfully.
啟動服務
$ ./WinSW.exe start
2024-08-29 15:11:40,418 INFO - Starting service 'Tinywan Frp Server 0.54.0 (TinywanFrpServer0.54.0)'...
2024-08-29 15:11:40,976 INFO - Service 'Tinywan Frp Server 0.54.0 (TinywanFrpServer0.54.0)' started successfully.
安裝服務命令執行后,如果返回值為0,就表示服務已經安裝成功。此時在windows服務的窗口,就能看到你剛才安裝的服務了
如果服務啟動有問題,可以通過錯誤日志文件WinSW.wrapper.log查看詳情
2024-08-29 14:58:46,486 ERROR - Failed to start service.
System.ComponentModel.Win32Exception (2): An error occurred trying to start process 'E:\frp_0.54.0_windows_amd64\frpc.exe' with working directory 'E:\service'. 系統找不到指定的文件。
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo )
at System.Diagnostics.Process.StartCore(ProcessStartInfo )
at System.Diagnostics.Process.Start()
at WinSW.Util.ProcessHelper.StartProcessAndCallbackForExit(Process processToStart, String executable, String arguments, Dictionary`2 envVars, String workingDirectory, Nullable`1 priority, ProcessCompletionCallback callback, LogHandler logHandler, Boolean hideWindow)
at WinSW.WrapperService.StartProcess(Process processToStart, String arguments, String executable, LogHandler logHandler)
at WinSW.WrapperService.DoStart()
at WinSW.WrapperService.OnStart(String[] args)
Nacos注冊為Windows服務
下載Nacos
二進制包下載地址:https://nacos.io/download/nacos-server
nacos-service.xml配置文件
<service>
<!-- 唯一服務ID -->
<id>NacosServer</id>
<!-- 顯示服務的名稱 -->
<name>Nacos Server 2.4.2 </name>
<!-- 服務描述 -->
<description>This service runs Nacos Server </description>
<!-- 日志路徑 -->
<logpath>你的nacos路徑\nacos\bin\logs\</logpath>
<!-- 日志模式 -->
<logmode>roll</logmode>
<!-- 可執行文件的命令 -->
<executable>E:\service\nacos\nacos\bin\startup.cmd</executable>
<!-- 停止可執行文件的命令 -->
<stopexecutable>E:\service\nacos\nacos\bin\shutdown.cmd</stopexecutable>
</service>
安裝Nacos Service服務
nacos-service.exe install
2024-09-05 19:46:32,748 INFO - Installing service 'Nacos Server 2.4.2 (NacosServer)'...
2024-09-05 19:46:32,805 INFO - Service 'Nacos Server 2.4.2 (NacosServer)' was installed successfully.
開啟服務
nacos-service.exe start
2024-09-05 19:48:48,307 INFO - Starting service 'Nacos Server 2.4.2 (NacosServer)'...
2024-09-05 19:48:48,331 INFO - Service 'Nacos Server 2.4.2 (NacosServer)' has already started.
查看Nacos Service服務
圖片
常用命令
winsw install 安裝服務
winsw uninstall 卸載服務
winsw start 開啟服務
winsw stop 停止服務
winsw restart 重新啟動服務
winsw status 檢查服務的當前狀態