您的位置:

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:\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服务运行。