Windows系统如何让ngrok服务在后台常驻运行
Windows系统实现ngrok后台常驻运行方案
你之前使用的&是类Unix Shell的后台运行语法,在Windows CMD/PowerShell环境下不生效。Windows默认会在终端窗口关闭时终止该终端挂载的所有子进程,所以ngrok会同步退出,以下是三种经过验证的可靠实现方式:
临时快速启动(无第三方依赖)
直接打开PowerShell执行以下命令,执行完成后关闭PowerShell窗口不会终止ngrok进程,运行日志会写入当前目录下的ngrok.log文件:Start-Process ngrok -ArgumentList "http 80 --log=ngrok.log" -WindowStyle Hidden需要停止服务时,直接打开任务管理器找到
ngrok.exe进程结束即可。注册为系统服务(长期运行首选,支持开机自启)
用Windows服务机制托管ngrok,进程完全脱离用户终端,系统重启后会自动拉起,稳定性最高:- 将ngrok.exe存放到固定目录(比如
C:\service\ngrok),避免文件被误删 - 使用服务托管工具(微软官方srvany、开源WinSW均可,放在ngrok同级目录即可)
- 配置服务启动项:指定启动程序为
ngrok.exe,启动参数为http 80 --log=C:\service\ngrok\ngrok.log - 执行服务安装命令,安装完成后在Windows服务管理器中将ngrok服务的启动类型设置为「自动」即可。
- 将ngrok.exe存放到固定目录(比如
任务计划程序托管(系统原生,无需额外工具)
不需要下载任何第三方软件,用Windows自带的任务计划即可实现后台常驻:- 搜索打开「任务计划程序」,点击右侧「创建任务」
- 常规选项卡:填写任务名称,勾选「不管用户是否登录都要运行」「使用最高权限运行」
- 触发器选项卡:新建触发器,选择「启动时」,实现开机自动运行
- 操作选项卡:新建操作,类型选「启动程序」,程序/脚本选择你的ngrok.exe实际路径,添加参数栏填写
http 80 --log=C:\service\ngrok\ngrok.log - 设置选项卡:取消勾选「如果任务运行时间超过以下时间,停止任务」,保存后手动右键点击任务选择「运行」即可生效。
注意:后台运行时不要使用
--log=stdout配合重定向的写法,无交互终端环境下标准输出重定向容易出现异常,直接将日志文件路径传给--log参数即可。
内容的提问来源于stack exchange,提问作者d.chan
相关产品推荐
相关产品推荐

