一、介绍
winsw是一个通用的Windows服务包装器,可以将任何可执行文件(.exe,.bat等)包装成Windows服务。winsw不需要安装,仅需将winsw.exe和配置文件复制到指定目录即可。winsw通过一个XML配置文件来定义服务的行为,可以轻松地安装,卸载,启动和停止自定义Windows服务。
二、winsw的特点
1、轻量级:winsw非常轻便,处理Windows服务所需的文件非常少,而且不需要安装任何东西,只需要将winsw.exe和配置文件复制到指定目录即可。
2、易配置:winsw使用XML作为配置文件格式,配置文件非常易于阅读和编辑。winsw支持命令行参数来替代配置文件中的某些选项,从而使服务的配置更加简单。
3、灵活性:winsw可以轻易地将几个脚本或可执行文件捆绑到一个Windows服务中。winsw通过提供许多不同的配置选项来适应各种服务需求。
4、可扩展性:winsw提供了丰富的扩展点来处理Windows服务的各种方面,例如日志记录和事件通知。
三、winsw的使用
winsw的使用非常简单,只需要将winsw.exe和配置文件复制到指定目录即可。以下是一个基本的winsw配置文件示例:
MyService
My Service
My custom Windows service
C:\path\to\executable.exe
C:\path\to\log\directory
roll
--myarg
--stop
--pause
--resume
C:\path\to\working\directory
normal
false
C:\path\to\stop\executable.exe
--stopnow
0
true
false
0
5
60
...
...
上述配置文件包含服务id和名称,描述服务的可执行文件的路径,日志文件路径,命令行参数,服务工作目录,重启策略等等。当需要安装该服务时,只需在命令行中运行如下命令:
winsw.exe install
安装服务后,即可使用Windows服务管理器启动,停止,暂停和恢复服务。
四、使用winsw的例子
1. 使用winsw管理Tomcat
在安装Tomcat时,如果需要将Tomcat作为Windows服务运行,通常需要安装Tomcat作为Windows服务或者使用特别的Tomcat服务包。但是,可以使用winsw轻易地将Tomcat包装成Windows服务,而无需进行额外的安装或配置。
以下是一个Tomcat的winsw配置文件:
Tomcat8
Tomcat8
Apache Tomcat 8.0 Server
D:\tomcat8\bin\tomcat8.exe
D:\tomcat8\logs
++StartMode: jvm
++StartClass: org.apache.catalina.startup.Bootstrap
++StartParams: start
++StopMode: jvm
++StopClass: org.apache.catalina.startup.Bootstrap
++StopParams: stop
D:\tomcat8
normal
NETWORK SERVICE
安装Tomcat服务:
winsw.exe install
启动Tomcat服务:
net start Tomcat8
停止Tomcat服务:
net stop Tomcat8
2. 使用winsw运行Python脚本
如果需要将Python脚本作为Windows服务运行,可以使用winsw轻松包装。以下是一个Python脚本的winsw配置文件示例:
TestPythonService
Test Python Service
A test Python service
C:\Python27\python.exe
C:\Python27\Logs
C:\Python27\Scripts\test.py
-c import win32serviceutil; win32serviceutil.StopService('TestPythonService')
若要安装服务,只需在命令行中运行:
winsw.exe install
3. 使用winsw运行Java应用程序
winsw适用于任何Windows支持的可执行文件格式,包括Java .jar文件。以下是一个Java应用程序的winsw配置文件示例:
TestJavaService
Test Java Service
A test Java service
C:\Program Files\Java\jdk1.8.0_144\bin\java.exe
C:\test\logs
-jar
C:\test\Test.jar
-cp
C:\test\Test.jar
com.test.TestShutdown
以下命令将安装该服务:
winsw.exe install
五、结论
winsw是一个非常好用的通用Windows服务包装器。通过winsw,用户可以将任何可执行文件(.exe,.bat等)打包成Windows服务,无需安装额外的软件。winsw的配置文件易于编辑和阅读,灵活性和可扩展性也非常强。通过winsw,用户可以轻易地管理Tomcat,Python脚本和Java应用程序等,并将它们作为Windows服务运行。