{"repo":"pandolia/easy-service","free":true,"listed":false,"github":"https://github.com/pandolia/easy-service","clone":"git clone https://github.com/pandolia/easy-service.git","description":null,"language":"C#","stars":597,"topics":["windows-service","devops","windows-server"],"license":null,"category":"deployment-docker-iac","readme_excerpt":"中文 English 介绍 如果你的 Windows 程序需要在后台长期运行，而且你希望它在开机后用户登录之前就自动运行、且在用户注销之后也不停止，那么你需要将程序注册为一个系统服务。 然而，在 Windows 下编写一个可注册为系统服务的程序并不是一件简单的事情。首先，程序必须是二进制的可执行程序，这就排除了脚本语言和虚拟机语言；其次，程序必须按系统服务的格式编写，过程繁琐，编写示例可见：MS 官方文档 。 EasyService 是一个可以将常规程序注册为系统服务的工具，体积只有 37KB 。你可以按常规的方法编写程序，然后用 EasyService 注册为一个系统服务，这样你的程序就可以在开机后用户登录之前自动运行、且在用户注销之后也不会停止。 如果你需要在 Windows 系统下部署网站、API 或其他需要长期在后台运行的服务， EasyService 将是一个很有用的工具。 安装 下载 源码及程序，解压。右键单击 bin 目录下的 register-this-path.bat ，以管理员身份运行，将 bin 目录加入至系统路径中，也可以手动将此目录加入至系统路径。 重新打开 “我的电脑” ，在任意位置打开一个命令行窗口，输入 svc -v ，如果正常输出版本信息，则表明安装成功。 使用方法 （1） 编写、测试你的程序，EasyService 对程序仅有一个强制要求和一个建议： 强制要求： 程序应持续运行 建议： 当程序的标准输入接收到 “exit” 或 “回车” 后在 5 秒之内退出 其中建议要求是非强制性的，程序不满足此要求也可以。 典型的程序见 index.js （nodejs 版）， main.py （python 版） 或 SampleWorker.cs （C# 版），这三个程序都是每隔 1 秒打印一行信息，键入回车后退出。 （2） 打开命令行窗口，输入 svc create hello-svc ，将创建一个样板工程 hello-svc 。 （3） 打开 hello-svc/svc.conf 文件，修改配置： （4） 用管理员身份打开命令行窗口（Win10 系统下，需要在开始菜单中搜索 cmd 然后右键以管理员身份运行）， cd 到 hello-svc 目录： a. 运行 svc check 命令检查配置是否合法 b. 运行 svc test-worker 命令测试 Worker 程序是否能正常运行 若测试无误： c. 运行 svc install 命令安装并启动系统服务，此时程序就已经开始在后台运行了 d. 运行 svc stop start restart remove 停止、启动、重启或删除本系统服务 注册多个服务 如果需要注册多个服务，可以用 svc create 创建多个目录，修改 svc.conf 中的服务名和程序名等内容，再在这些目录下打开命令行窗口执行 svc check test-worker install 等命令就可以了。需要注意的是： （1） 不同目录下的服务名不能相同，也不能和系统已有的服务同名 （2） 配置文件中的 Worker/WorkingDir/OutFileDir 都是相对于该配置文件的路径 （3） 注册服务之前，WorkingDir/OutFileDir 所指定的目录必须先创建好 EasyService 服务操作命令 以下命令可以操作 EasyService 服务（用 svc 命令注册的服务），这些命令可在任意位置运行，不需要 cd 到 svc.conf 所在的目录： svc list ls","default_branch":null,"files":null,"tree":[],"storefront":"/r/pandolia","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/pandolia/easy-service/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}