一般如果在Linux上部署服务, 可以通过systemd来管理进程, 比如进程崩溃退出了可以自动重启,保证服务稳定性, 在Linux上 有以下集中方式来做到自动重启:
- systemd
- supervisor
- pm2
- docker或Kubernetes等容器化工具
但是在windows上, 几乎很少有此类工具, 遇到的问题有:
- 服务启动会有一个cmd窗口,就是一个黑框框,还不能关闭, 一关闭服务就会停止运行。
- 自带的windows服务不好用, 查看日志也不方便。
比如我需要让内网穿透工具F R P在后台运行,如果断网,frp可能就会自动退出运行,这时有一些第三方工具可以解决此类问题
nssm
NSSM是一个服务封装程序,它可以将普通exe程序或bat文件封装成服务,使之像windows服务一样运行。同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。它的特点如下:
1.支持普通exe程序(控制台程序或者带界面的Windows程序都可以)或bat文件
2.安装简单又方便
3.可以重定向输出(并且支持Rotation)
4.可以自动守护封装了的服务,程序挂掉了后可以自动重启
5.可以自定义环境变量
6.可以自定义启动参数
从以上可以得知,NSSM每个功能都很实用,可以大大简化开发流程,降低了开发难度,使用和调试起来也非常方便,特别不需要考虑开发一个服务实现服务守护功能,以确保稳定可靠。
它的官网是:https://nssm.cc/download
使用方法:
先把这个nssm.exe扔到C:Windows中,然后打开cmd
在命令行中运行 nssm install 服务名 既可以安装服务, 这时会弹一个窗口
填入你需要的信息, 点击install service即可,操作系统的服务管理中现在可以管理这个服务了。
winsw
需要写配置文件,开源仓库请查看:https://github.com/winsw/winsw
Always Up
最好用的还是这个软件Always Up, 也是我一直在用的软件, 我的frp内网穿透,syncthing同步工具都是用它来进行守护进程的, 服务挂掉可以自动重启, 控制台的日志也可以收集到一个文件中并可以按照日志大小来进行切割。
这个软件更好用, 并且全是图形界面操作。
14.5.1.68 破解版下载地址(网盘不限速链接):