EasyService

Windows 系统服务注册工具
授权协议 MIT
开发语言 Python C# JavaScript
所属分类 应用工具、 操作系统工具
软件类型 开源软件
地区 国产
投 递 者 康锦
操作系统 Windows
开源组织
适用人群 未知
 软件概览

EasyService 是一个可以将常规程序注册为系统服务的工具。你可以按常规的方法编写程序,然后用 EasyService 注册为一个系统服务,这样你的程序就可以在开机后用户登录之前自动运行、且在用户注销之后也不会停止。

如果你需要在 Windows Server 下部署网站、Api 等服务, EasyService 将是一个很有用的工具。

介绍

如果你的 Windows 程序需要在开机后用户登录之前就开始运行、且在用户注销之后也不停止,那么你需要将程序注册为一个系统服务。

然而,在 Windows 下编写一个可注册为系统服务的程序并不是一件简单的事情。首先,程序必须是二进制的可执行程序,这就排除了脚本语言和虚拟机语言;其次,程序必须按系统服务的格式编写,编写过程繁琐,编写示例可见:MS 官方文档 。

系统要求

EasyService 需要 .NetFramework 4.0 (大部分 Windows 系统都已自带)。可尝试运行 worker/sample-worker.exe ,如果正常运行,则表明系统中已安装 .NetFramework 4.0 。

使用方法

(1) 编写、测试你的程序,EasyService 对程序仅有以下两点要求:

a. 程序应持续运行

b. 当程序的标准输入接收到 “exit” 后应在 10 秒之内退出

典型的程序见 worker/index.js (nodejs 版), worker/main.py (python 版) 或 src/SampleWorker.cs (C# 版)。

(2) 下载 源码及程序,解压。

(3) 打开 svc.conf 文件,修改配置:

# Windows 系统服务名称、不能与系统中已有服务重名
ServiceName: An Easy Service

# 需要运行的可执行程序及命令行参数
Worker: node index.js

# 程序运行的工作目录
WorkingDir: worker

# 输出目录,程序运行过程的输出将会写到这个目录下面
OutFileDir: outfiles

# 程序输出的编码,如果不确定,请设为空或 none
WorkerEncoding: utf8

(4) 在 svc.exe 所在的目录下打开命令行窗口:

  • a. 运行 svc check 命令检查配置是否合法
  • b. 运行 svc test-worker 命令测试 Worker 程序是否能正常运行

若测试无误:

  • c. 运行 svc install 命令注册并启动系统服务,此时你的程序就已经开始运行了,即便用户注销也不会停止运行,且系统开机后、用户登录之前就会自动运行。在服务管理控制台中可以查看已注册的服务。
  • d. 运行 svc stop|start|restart|remove 停止、启动、重启或删除本系统服务。

内部实现

EasyService 实质是将自己(svc.exe)注册为一个系统服务,此服务启动时,会读取 svc.conf 中的配置,创建一个子进程运行 Worker 中指定的程序及命令行参数,之后,监视该子进程,如果发现子进程停止运行,会重新启动一个子进程。而当此服务停止时,会向子进程的标准输入中写入数据 “exit” ,并等待子进程退出,如果等待时间超过 10 秒,则直接终止子进程。

  • 软件简介 介绍 如果你的 Windows 程序需要在开机后用户登录之前就开始运行、且在用户注销之后也不停止,那么你需要将程序注册为一个系统服务。 然而,在 Windows 下编写一个可注册为系统服务的程序并不是一件简单的事情。首先,程序必须是二进制的可执行程序,这就排除了脚本语言和虚拟机语言;其次,程序必须按系统服务的格式编写,编写过程繁琐,编写示例可见:MS 官方文档 。 EasyService

 相关资料
  • 我正在尝试注册服务工作者,但出现错误: 该页面使用github Pages托管:https://boopathi.in/sw-demo-iss。源代码在这里https://github.com/boopathi/sw-demo-iss 我试图理解这意味着什么,以及如何解决错误。

  • 本文向大家介绍Shell脚本注册到Linux系统服务实例,包括了Shell脚本注册到Linux系统服务实例的使用技巧和注意事项,需要的朋友参考一下 注册一个系统服务,开机自启动. 1 脚本编写 #vim test.sh 2注册服务 3.删除服务

  • 在进行服务拆分之后,服务的数量会变得非常多,而每个服务又可能会有非常多的集群节点来提供服务,那么为保障系统的正常运行,必然需要有一个中心化的组件完成对各个服务的整合,即将分散于各处的服务进行汇总,汇总的信息可以是提供服务的组件名称、地址、数量等,每个组件拥有一个监听设备,当本组件内的某个服务的状态变化时报告至中心化的组件进行状态的更新。服务的调用方在请求某项服务时首先到中心化组件获取可提供该项服务

  • 注册服务 Frontier带有一些非常基本的基础层服务,也包括了大部分的注册商(registrar)。注册商由3个部分组成。 GlobalRegistrar将名称(字符串)关联到帐户(地址)。 HashReg将散列关联到哈希(将任何对象映射到“内容”哈希)。 UrlHint将内容哈希值关联到提示内容的位置。只有在内容存储不是内容寻址的情况下才需要,否则内容哈希已经是内容地址。如果使用它,则从URL

  • 主要内容:服务的分类,查询已经安装的服务和区分服务我们知道,系统服务是在后台运行的应用程序,并且可以提供一些本地系统或网络的功能。我们把这些应用程序称作 服务,也就是 Service。不过,我们有时会看到 Daemon 的叫法,Daemon 的英文原意是"守护神",在这里是"守护进程"的意思。 那么,什么是守护进程?它和服务又有什么关系呢? 守护进程就是为了实现服务、功能的进程。比如,我们的 apache 服务就是服务(Service),它是用来

  • 13.系统服务 同其它现代操作系统一样,Android也内置了一系列的系统服务。它们都是随着系统启动,并一直处于运行状态,随时可供开发者访问。比如位置服务、传感器服务、WiFi服务、Alarm服务、Telephony服务、Bluetooth服务等等。 本章介绍几个常见的系统服务,并思考如何将它们应用到Yamba。我们先在一个小例子里引入传感器服务,借以观察系统服务的一般特性,然后通过位置服务为Ya

  • SRS提供多种启动的方式,包括: 在git目录直接启动,简单直接,但系统重启后需要手动启动。 系统服务,init.d脚本:SRS提供srs/trunk/etc/init.d/srs脚本,可以作为CentOS或者Ubuntu的系统服务自动启动。 可以直接下载release的binary,提供了几个常见系统的安装包,安装程序会安装系统服务,直接以系统服务启动即可。参考:Github: release或

  • 当我执行时,我的服务按预期列出,但当我从web或通过功能测试访问我的包时,我得到: 未捕获的PHP异常Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException:“您请求了一个不存在的服务”xx。处理程序”在xx/app/bootstrap。php。缓存行2031{“异常”:“[对象](Symfony\Compo