登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. Platforms
  3. WINDOWS
  4. OAM
  5. 正文

Windows Service Wrapper将各种程序变成Windows服务(nginx举例)

2018-02-27

很多三方小程序都没有提供将自身注册为Windows标准服务的方法,但是通过一个小程序即可达到目的,它就是Windows Service Wrapper。

一、下载地址

官方主页:https://github.com/kohsuke/winsw/

下载地址:https://github.com/kohsuke/winsw/releases

二、使用示例

我们将nginx注册为Windows服务。

总之来说,Windows Service Wrapper需要新建被包装的程序的配置文件

2.0 nginx重启命令

如下:

Nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。(快速退出)
Nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。(平滑退出)
Nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。(重新加载配置)
Nginx -s reopen 重新打开日志文件。(重新加载日志)

2.1 重命名WinSW.NET4.exe为任意名称,比如myapp.exe

2.2 新建nginx服务配置文件

命名为myapp.xml,必须与winsw.exe重命名的文件名一致。

必须与命名后的myapp.exe放置在同一目录,内容如下:

<service>
  <id>nginx</id>
  <name>nginx</name>
  <description>nginx</description>
  <executable>D:\WebServer\nginx-1.12.2\nginx.exe</executable>
  <logpath>D:\WebServer\nginx-1.12.2\</logpath>
  <logmode>roll</logmode>
  <depend></depend>
  <startargument>-p</startargument>
  <startargument>D:\WebServer\nginx-1.12.2\</startargument>
  <stopexecutable>D:\WebServer\nginx-1.12.2\nginx.exe</stopexecutable>
  <stopargument>-p</stopargument>
  <stopargument>D:\WebServer\nginx-1.12.2\</stopargument>
  <stopargument>-s</stopargument>
  <stopargument>stop</stopargument>
</service>

2.3注册服务

以管理员身份运行cmd,输入:D:\nginx\winsw.exe install,回车,提示安装服务完成。

2.4注意

经常通过Windows重启winSW服务,但子进程并没有关闭,导致配置不能更新(特别是修改nginx.conf)。

若碰到这种这种情况,需要使用任务管理器手动关闭nginx.exe。

三、总结

1、经过使用后发现,Windows服务内注册的服务路径不是被委托程序,而是winsw.exe。所以每一个服务封装,都必须考虑一份独立的winsw.exe,原因如此。

-

 

参考链接


https://www.cnblogs.com/roam/p/5926550.html

标签: 暂无
最后更新:2018-04-17

代号山岳

知之为知之 不知为不知

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号