You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在USB硬盘部署Minecraft服务器启动失败求助

Hey,首次在Linux上折腾MC服务器碰到这种问题太正常了,咱们一步步来排查解决:

问题排查与修复步骤

1. 优先解决USB硬盘的权限问题

这是最常见的坑——USB硬盘挂载后默认可能只有root用户有权限访问,你的minecraft用户根本读不到里面的文件,直接导致服务启动失败。

  • 先检查挂载目录的权限:
    ls -ld /media/main/ALL/.minecraft-server
    
    如果输出里的所有者是root:root,那肯定是权限问题。
  • 给minecraft用户授予目录的完全权限:
    sudo chown -R minecraft:minecraft /media/main/ALL/.minecraft-server
    sudo chmod -R 755 /media/main/ALL/.minecraft-server
    
  • 为了避免重启后权限失效,修改/etc/fstab配置挂载参数:
    1. 用blkid命令找到你的USB硬盘UUID(输出里类似UUID=xxxx-xxxx的字符串)
    2. 编辑/etc/fstab:
      sudo nano /etc/fstab
      
    3. 找到对应硬盘的挂载行,添加uid=minecraft,gid=minecraft参数,比如:
      UUID=你的硬盘UUID /media/main/ALL ext4 defaults,uid=minecraft,gid=minecraft 0 2
      
    4. 重新挂载生效:
      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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:23:01