Windows SSH断开后如何保持Minecraft服务器进程持续运行?
解决Windows SSH启动Minecraft服务器断开后进程终止的问题
嘿,我完全懂你的困扰——Windows不像Linux有原生的screen命令,但确实有几个实用的办法能让你的MC服务器在SSH断开后继续跑,下面给你详细拆解:
方案1:用CMD原生命令快速实现后台运行
这是最省心的原生方案,不用装任何额外工具。把你的启动命令改成这样就行:
start /B java -Xmx2G -Xms2G -jar server.jar nogui
/B参数会让Java进程在后台启动,不会新开CMD窗口- 执行完这个命令后,直接断开SSH会话就行,MC服务器会留在后台持续运行
- 后续要查看日志或终止进程的话,得通过任务管理器找到对应的
java.exe进程操作
方案2:用PM2管理进程(推荐)
PM2是跨平台的进程管理器,不仅能让进程后台存活,还能帮你管理日志、自动重启,特别适合MC这种需要长期运行的程序:
- 先安装Node.js(PM2依赖Node,不想装Node的话也可以用PM2的Windows独立包)
- 打开SSH的CMD窗口,全局安装PM2:
npm install pm2 -g
- 用PM2启动MC服务器:
pm2 start java --name "MCServer" -- -Xmx2G -Xms2G -jar server.jar nogui
--name "MCServer"给进程起个辨识度高的名字,方便后续管理- 之后可以用
pm2 list查看运行状态,pm2 logs MCServer实时看服务器日志,pm2 stop MCServer停止服务 - 就算断开SSH、甚至服务器重启,PM2都能让进程保持运行(提前配置
pm2 startup就能实现开机自启)
方案3:用Windows任务计划程序创建后台任务
如果不想用命令行工具,也可以通过系统自带的任务计划程序来实现:
- 打开Windows「任务计划程序」,点击「创建任务」
- 「常规」标签页勾选「不管用户是否登录都要运行」,并选择「最高权限运行」
- 「触发器」标签页添加触发条件(比如手动触发,或者特定时间触发)
- 「操作」标签页设置启动程序:选择你的
java.exe路径,添加参数:-Xmx2G -Xms2G -jar "你的服务器jar包完整路径" nogui - 保存任务后,通过SSH执行
schtasks /run /tn "你的任务名称"就能启动服务器,断开SSH后进程不会终止
额外小提示
有些SSH服务器(比如Bitvise)默认会在会话断开时终止所有子进程,你可以去管理界面检查下「终端」相关设置,把「会话终止时终止进程」的选项关掉,避免进程被强制结束
内容的提问来源于stack exchange,提问作者Flam3rboy




