在USB硬盘部署Minecraft服务器启动失败求助
Hey,首次在Linux上折腾MC服务器碰到这种问题太正常了,咱们一步步来排查解决:
问题排查与修复步骤
1. 优先解决USB硬盘的权限问题
这是最常见的坑——USB硬盘挂载后默认可能只有root用户有权限访问,你的minecraft用户根本读不到里面的文件,直接导致服务启动失败。
- 先检查挂载目录的权限:
如果输出里的所有者是ls -ld /media/main/ALL/.minecraft-serverroot:root,那肯定是权限问题。 - 给
minecraft用户授予目录的完全权限:sudo chown -R minecraft:minecraft /media/main/ALL/.minecraft-server sudo chmod -R 755 /media/main/ALL/.minecraft-server - 为了避免重启后权限失效,修改
/etc/fstab配置挂载参数:- 用
blkid命令找到你的USB硬盘UUID(输出里类似UUID=xxxx-xxxx的字符串) - 编辑
/etc/fstab:sudo nano /etc/fstab - 找到对应硬盘的挂载行,添加
uid=minecraft,gid=minecraft参数,比如:UUID=你的硬盘UUID /media/main/ALL ext4 defaults,uid=minecraft,gid=minecraft 0 2 - 重新挂载生效:
sudo mount -a
- 用
2. 修正systemd服务里的命令问题
- 通配符不生效:systemd的
ExecStart里不会自动解析spigot*.jar这种通配符,你必须写完整的jar文件名,比如spigot-1.20.1.jar,不然系统找不到文件直接报错退出。 - 多余的会话名横杠:你移除了
%i参数后,会话名变成了mc-,虽然不致命,但改成mc更规范,把所有mc-%i替换成mc。
3. 手动测试用户环境
先切换到minecraft用户,直接启动服务器,看是否能正常运行:
sudo su - minecraft -s /bin/bash cd /media/main/ALL/.minecraft-server # 替换成你的完整jar文件名 java -Xms512M -Xmx3584M -jar spigot-xxx.jar nogui
如果这里报错(比如权限不足、找不到文件),先解决这个问题,再去启动systemd服务。
4. 查看详细日志定位问题
systemd的状态信息不够细致,用下面的命令实时查看服务日志,能看到具体的错误原因(比如权限拒绝、文件不存在):
journalctl -u minecraft.service -f
修正后的完整service文件
把上面的问题都修复后,你的配置文件应该是这样的:
[Unit] Description=Minecraft Server After=network.target [Service] WorkingDirectory=/media/main/ALL/.minecraft-server User=minecraft Restart=always # 替换成你实际的spigot jar文件名 ExecStart=/usr/bin/screen -DmS mc /usr/bin/java -Xms512M -Xmx3584M -jar -DIReallyKnowWhatIAmDoingISwear spigot-1.20.1.jar nogui ExecStop=/usr/bin/screen -p 0 -S mc -X eval 'stuff "say SERVER SHUTTING DOWN IN 15 SECONDS..."\015' ExecStop=/bin/sleep 5 ExecStop=/usr/bin/screen -p 0 -S mc -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS..."\015' ExecStop=/bin/sleep 5 ExecStop=/usr/bin/screen -p 0 -S mc -X eval 'stuff "say SERVER SHUTTING DOWN IN 5 SECONDS..."\015' ExecStop=/bin/sleep 5 ExecStop=/usr/bin/screen -p 0 -S mc -X eval 'stuff "save-all"\015' ExecStop=/usr/bin/screen -p 0 -S mc -X eval 'stuff "stop"\015' [Install] WantedBy=multi-user.target
最后重新加载systemd配置并启动服务:
sudo systemctl daemon-reload sudo systemctl start minecraft.service
内容的提问来源于stack exchange,提问作者Vivent
相关产品推荐
相关产品推荐

