Ubuntu虚拟机中Minecraft服务器重启后无法找到控制台求助
解决Minecraft服务器脱离Screen会话但仍运行的问题
1. 定位服务器进程
先找到仍在运行的Minecraft服务器进程ID(PID):
- 执行
ps aux | grep java,在输出里筛选出对应Minecraft服务器的进程(排除带grep java的行) - 或者用更精准的命令:
pgrep -f "server.jar"(如果你的服务器启动jar是server.jar)
2. 重新接管控制台
用reptyr工具将后台进程绑定到当前终端:
- 安装工具:
sudo apt update && sudo apt install reptyr - 绑定进程:
sudo reptyr <你的PID>
执行后,当前终端会成为Minecraft服务器的控制台,可正常输入命令。如果需要放回screen会话,先新建screen(screen -S mc-server),再执行上述reptyr命令,之后按Ctrl+A D即可分离会话。
3. 问题原因
Minecraft服务器内部的restart命令会终止当前Java进程并重新启动,但重启后的进程会脱离原screen会话控制,变成后台孤儿进程——因此找不到对应screen会话,但进程本身仍在运行。
4. 避免后续出现该问题
- 弃用内部restart命令:改用手动流程:在控制台输入
stop关闭服务器,确认进程终止后,在screen会话里重新启动服务器。 - 改用systemd管理服务(更稳定):
创建systemd服务文件/etc/systemd/system/minecraft.service,内容如下(替换成你的实际配置):
然后执行:[Unit] Description=Minecraft Server After=network.target [Service] User=ubuntu WorkingDirectory=/home/ubuntu/minecraft-server ExecStart=/usr/bin/java -Xmx8G -Xms4G -jar server.jar nogui Restart=always RestartSec=3 [Install] WantedBy=multi-user.targetsudo systemctl daemon-reloadsudo systemctl enable minecraftsudo systemctl start minecraft
后续管理命令:- 查看控制台日志:
journalctl -u minecraft -f - 重启服务器:
sudo systemctl restart minecraft - 停止服务器:
sudo systemctl stop minecraft
内容的提问来源于stack exchange,提问作者thesnipe12
相关产品推荐
相关产品推荐

