Windows将FRP设置为服务并开机自启


Windows也能像Linux那样设置程序为后台运行,就是将其添加为服务;

此处需要使用到winsw 下载地址: https://github.com/kohsuke/winsw/releases

下载解压至任意目录并CD进入;

这里将下载WinSw.Net4.exe重命名为winsw.exe了,以方便后面操作;

创建与winsw同名的配置文件,后缀为xml

此处以配置FRP客户端为例:

<service>
    <!-- 该服务的唯一标识 -->
    <id>frp</id>
    <!-- 该服务的名称 -->
    <name>frp0.27.1-windows-amd64</name>
    <!-- 该服务的描述 -->
    <description>frpc客户端 这个服务用 frpc 实现内网穿透</description>
    <!-- 要运行的程序路径 -->
    <executable>D:\Software\frp\frp_0.27.1_windows_amd64\frpc.exe</executable>
    <!-- 携带的参数 -->
    <arguments>-c frpc.ini</arguments>
    <!-- 第一次启动失败 60秒重启 -->
    <onfailure action="restart" delay="60 sec"/>
    <!-- 第二次启动失败 120秒后重启 -->
    <onfailure action="restart" delay="120 sec"/>
    <!-- 日志模式 -->
    <logmode>append</logmode>
    <!-- 指定日志文件目录(相对于executable配置的路径) -->
    <logpath>logs</logpath>
</service>

开始使用:

    //注册服务
    winsw.exe install
    //卸载服务
    winsw.exe uninstall
    //启动服务
    winsw.exe start
    //停止服务
    winsw.exe stop
    //重启服务
    winsw.exe restart
    //查看状态
    winsw.exe status

注册服务时如果被某60拦截了需要点允许,如果提示:FATAL - WMI Operation failure: AccessDenied 则需要以管理员方式运行CMD再试;

不出意外的话打开任务管理器就能看到刚刚添加的服务了

从服务里面看 可执行文件的路径是:"D:\Software\frp\frp_0.27.1_windows_amd64\winsw"

实际是 winsw.xml 中 executable 中的路径 不影响功能

出现的问题:服务无法启动
解决方法:需要用以下配置方式将启动和停止参数分成多行。
1、配置frp启动服务

<service>
    <!-- 该服务的唯一标识 -->
    <id>frp</id>
    <!-- 该服务的名称 -->
    <name>frp</name>
    <!-- 该服务的描述 -->
    <description>frpc客户端 这个服务用 frpc 实现内网穿透</description>
    <!-- 要运行的程序路径 -->
    <executable>C:\Tools\frp\frpc.exe</executable>
    <!-- 携带的参数 -->
    <startargument>-c</startargument>
    <startargument>C:\Tools\frp\frpc.ini</startargument>
    <!-- 第一次启动失败 60秒重启 -->
    <onfailure action="restart" delay="60 sec"/>
    <!-- 第二次启动失败 120秒后重启 -->
    <onfailure action="restart" delay="120 sec"/>
    <!-- 日志模式 -->
    <logmode>append</logmode>
    <!-- 指定日志文件目录(相对于executable配置的路径) -->
    <logpath>logs</logpath>
</service>

2、正常启动事件日志(可以去windows的事件管理器查看)

//正常启动事件日志
Starting C:\Tools\frp\frpc.exe  -c C:\Tools\frp\frpc.ini 
//正常停止事件日志
Child process [13588 - C:\Tools\frp\frpc.exe  -c C:\Tools\frp\frpc.ini ] terminated with 2

声明:Hello Communication World|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Windows将FRP设置为服务并开机自启


道虽迩,不行不至;事虽小,不为不成