前言

今天介绍一个小工具的使用。我们都知道Windows Service是一种特殊的应用程序,它的好处是可以一直在后台运行,相对来说,比较适合一些需要一直运行同时不需要过多用户干预的应用程序,这一类我们称之为“服务”吧

编写Windows Service其实是不难的,尤其是如果有Visual Studio的话。但是仍然是有不少童鞋觉得略显繁琐,同时,如果有一些其他的程序,我们只拿到一个exe,或者一个bat,但又想让他象服务一样运行,怎么办呢

答案就是可以使用如下的一个工具,它的名称就叫:Windows Service Wrapper,简称WSW。

wsw的基本使用

一般的使用步骤是:

1. 下载wsw的最新版本,放在任意的位置,修改成你想要的任何名字如“myapp.exe”

2.编写一个同名的xml文件 如:myapp.xml

3.使用Install命令进行安装

  1.  myapp.exe install

4.如果想要卸载,则使用Uninstall命令

  1. myapp.exe uninstall

5. 重启

  1. myapp.exe restart
6:停止
  1. myapp.exe stop
7: 启动:
  1. myapp.exe start

https://github.com/kohsuke/winsw

配置文件的格式请参考:https://github.com/kohsuke/winsw

我的一个例子如下

  1. <service>
  2. <id>nginx</id>
  3. <name>nginx</name>
  4. <description>nginx</description>
  5. <executable>c:\nginx\nginx.exe</executable>
  6. <logpath>c:\nginx\</logpath>
  7. <logmode>roll</logmode>
  8. <depend></depend>
  9. <startargument>-c</startargument>
  10. <startargument>c:\nginx\conf\nginx.conf</startargument>
  11. <startargument>-c</startargument>
  12. <startargument>c:\nginx</startargument>
  13. <stopexecutable>c:\nginx\nginx.exe</stopexecutable>
  14. <stopargument>-p</stopargument>
  15. <stopargument>c:\nginx</stopargument>
  16. <stopargument>-s</stopargument>
  17. <stopargument>stop</stopargument>
  18. </service>

运行install后,在services.msc中可以看到这个服务

 
 

相关知识

在Windows系统里面,还有一类特殊的服务,他们都是用一个特殊的程序启动的(svchost),如下

那么,这又是怎么一回事情呢?有兴趣的童鞋可以参考  http://www.howtogeek.com/howto/windows-vista/what-is-svchostexe-and-why-is-it-running/

在Linux系统上面,也有一个类似的工具(而且更加强大),supervisor,有兴趣的童鞋可以参考

http://supervisord.org/introduction.html

使用Windows Service Wrapper快速创建一个Windows Service 如nginx的更多相关文章

  1. 使用Windows Service Wrapper快速创建一个Windows Service

    前言 今天介绍一个小工具的使用.我们都知道Windows Service是一种特殊的应用程序,它的好处是可以一直在后台运行,相对来说,比较适合一些需要一直运行同时不需要过多用户干预的应用程序,这一类我 ...

  2. C#创建一个Windows Service

    Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的.所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Window ...

  3. [翻译] 使用 .NET Core 3.0 创建一个 Windows 服务

    原文: .NET Core Workers as Windows Services 在 .NET Core 3.0 中,我们引入了一种名为 Worker Service 的新型应用程序模板.此模板旨在 ...

  4. 为MongoDB创建一个Windows服务

    一:选型,根据机器的操作系统类型来选择合适的版本,使用下面的命令行查询机器的操作系统版本 wmic os get osarchitecture 二:下载并安装 附上下载链接 点击安装包,我这里是把文件 ...

  5. 创建一个Windows服务程序与实现定时器效果

    1.创建一个Windows服务程序 一.   新建Window服务项目 二.   添加安装程序 三.   配置服务属性 四.   编写定时器代码 publicpartialclassService1 ...

  6. Step by Step 创建一个WCF Service

    原创地址:http://www.cnblogs.com/jfzhu/p/4025448.html 转载请注明出处 (一)创建WCF Service (1)创建WCF Service类库 创建一个Cla ...

  7. ASP.NET Core模块化前后端分离快速开发框架介绍之2、快速创建一个业务模块

    源码地址 GitHub:https://github.com/iamoldli/NetModular 演示地址 地址:https://nm.iamoldli.com 账户:admin 密码:admin ...

  8. Step by Step 创建一个 Web Service

    原创地址:http://www.cnblogs.com/jfzhu/p/4022139.html 转载请注明出处 (一)创建Web Service 创建第一个项目,类型选择ASP.NET Empty ...

  9. 通过beego快速创建一个Restful风格API项目及API文档自动化

    通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...

随机推荐

  1. cocos2d中个类之间的关系

    1.Director类: (1)单例类Director::getInstance()  ,获取导演类对象 (2)设置游戏配置(OpenGL),推动游戏发展 runWithSence.replaceSe ...

  2. 实验一 Java开发环境的熟悉(Linux + Idea) 20175301李锦然

    https://gitee.com/ShengHuoZaiDaXue/20175301.git 实验一 Java开发环境的熟悉(Linux + Idea) 实验内容 1.使用JDK编译.运行简单的Ja ...

  3. Python——Selenium & Chrome Driver配置

    1.CMD下载安装selenium pip install selenium 2.python运行: from selenium import webdriver browser = webdrive ...

  4. Python——合并指定文件夹下的所有excel文件

    前提:该文件夹下所有文件有表头且具有相同的表头. import glob # 同下 from numpy import * #请提前在CMD下安装完毕,pip install numppy impor ...

  5. linux 每个小时释放一次cache

    echo 3 > /proc/sys/vm/drop_caches;

  6. 【1】学习C++时,一些零散知识点01

    1.编程理念 学习从学习完C后,接触了C++,最重要的便是编程理念的转变.C缩重视的是结构化编程,面对一个较大的程序,就将他分解成小型.便于管理的任务,如果分解后的任务还是偏难过大的话,那将这个任务继 ...

  7. 组件或者dom的特殊属性

    key:用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes. 常用姿势: 1.结合 v-for,有相同父元素的子元素必须有唯一key. <ul> <li ...

  8. POI操作excle

    将根目录下的poi-3.6-20091214.jar和Lib目录下三个通用包 commons-logging-1.1.jar junit-3.8.1.jar log4j-1.2.13.jar拷贝到项目 ...

  9. mac 删除文件夹里所有的.svn文件

    先用命令行,进入你要删除的文件夹中(./ 为这个文件夹的当前路径,也可以填写绝对路径) 命令行下输入: sudo find ./ -name ".svn" -exec rm -r ...

  10. 为什么要使用`QuerySet.iterator()`

    用django的custom command功能,写了一个脚本,目的是修正生成环境的数据,tqdm告诉我运行时长预估是2小时. 一个小时后,正在吃午饭的我,接到了很多微信推送.客户告诉我服务不可用,同 ...