一个强大到可让任何程序秒变系统服务的神器 EasyService,你会用吗?

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !



什么是 EasyService

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

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

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

如果你需要在 Windows 系统下部署网站、API 或其他需要长期在后台运行的服务, EasyService 将是一个很有用的工具。

项目地址:https://github.com/pandolia/easy-service/

EasyService 实现原理

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

使用 EasyService

  1. EasyService 对程序仅有一个强制要求和一个建议。

  • 强制要求:程序应持续运行

  • 建议:当程序的标准输入接收到 “exit” 后在 10 秒之内退出

这类型典型的程序有很多,比如:命令行内网穿透 frp 工具、各种 Nodejs、Python 小工具等等。

  1. 安装 EasyService

安装 EasyService 的前提是系统已安装 .NetFramework 4.0 (大部分 Windows 系统都已自带)。然后你就可以通过下面的地址下载对应的安装程序。

https://github.com/pandolia/easy-service/archive/master.zip
  1. 编辑配置文件

解压上面的安装压缩包,然后打开 svc.conf 文件,并根据需求修改配置。

# 需要注册成 Windows 系统服务的名称,不能与系统中已有服务重名
ServiceName: An Easy Service


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


# 程序运行的工作目录,请确保该目录已存在
WorkingDir: worker


# 输出目录,程序运行过程的输出将会写到这个目录下面,请确保该目录已存在
OutFileDir: outfiles


# 程序输出的编码形式,如果不确定,请设为空或 none
WorkerEncoding: utf8
  1. 注册成为一个服务

用管理员账号登录系统后,在 svc.exe 所在的目录下打开命令行窗口。

  • 首先,运行 svc check 命令检查配置是否合法。

  • 其次,运行 svc test-worker 命令测试 Worker 程序是否能正常运行。

测试无误后,接着执行以下命令。

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

注意:Windows 10 系统下,需要先在开始菜单中搜索 cmd 命令。然后右键以管理员身份运行后,再切换到 svc.conf 所在的目录并执行以上命令。

如果要在命令行下管理新注册的服务,你可以使用以下这些命令:

$ svc stop # 停止一个服务
$ svc start # 启动一个服务
$ svc restart # 重启一个服务
$ svc remove # 删除一个服务
  1. 注册多个服务

如果需要注册多个服务,你可以先新建多个目录,并将 svc.exesvc.conf 拷贝到这些目录。然后修改各目录 svc.conf 文件中的服务名和程序名等内容。最后,再在这些目录下以管理员权限打开命令行窗口执行 svc check|test-worker|install 等命令就可以了。需要注意的是:

  • 不同目录下的服务名不能相同,也不能和系统已有的服务同名。

  • 配置文件中的 Worker/WorkingDir/OutFileDir 都是相对于该配置文件的路径。

  • 注册服务之前,WorkingDir/OutFileDir 所指定的目录必须先创建好。

至此,如何利用 EasyService 快速注册一个服务的方法就介绍完了,你学会了吗?

参考文档

  1. https://www.google.com

  2. https://github.com/pandolia/easy-service

你可能还喜欢

点击下方图片即可阅读

GitHub App 正式发布,或许这是送给全球开发者最好的礼物!

点击上方图片,打开小程序,加入「玩转 Linux」圈子

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值