winsw:一个通用的Windows服务包装器(使用winsw部署Windows服务)

一、介绍

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:pathtoexecutable.exe
  C:pathtologdirectory
  roll
  

  --myarg
  --stop
  --pause
  --resume

  C:pathtoworkingdirectory
  normal
  false

  C:pathtostopexecutable.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:tomcat8bintomcat8.exe
  D:tomcat8logs

  ++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:Python27python.exe
  C:Python27Logs  
  
  C:Python27Scriptstest.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 FilesJavajdk1.8.0_144binjava.exe
  C:testlogs
  
  -jar
  C:testTest.jar
  
  -cp
  C:testTest.jar
  com.test.TestShutdown


以下命令将安装该服务:

winsw.exe install

五、结论

winsw是一个非常好用的通用Windows服务包装器。通过winsw,用户可以将任何可执行文件(.exe,.bat等)打包成Windows服务,无需安装额外的软件。winsw的配置文件易于编辑和阅读,灵活性和可扩展性也非常强。通过winsw,用户可以轻易地管理Tomcat,Python脚本和Java应用程序等,并将它们作为Windows服务运行。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平