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

Ubuntu系统下Crontab结合Screen重启后无法启动Minecraft服务器

问题分析与解决步骤

1. 修复crontab语法错误

你的@reboot配置写法完全错误,@reboot本身就是代表系统重启后执行的特殊时间规则,不能再追加5 * * * *这类时间参数。如果要实现重启后延迟5分钟执行脚本,正确写法是用sleep命令:

@reboot sleep 300 && /home/你的用户名/mcserver/start.sh

(替换你的用户名为实际服务器用户名)

2. 解决crontab环境变量差异问题

crontab的执行环境和用户命令行环境完全不同,这是最常见的触发失败的原因:

  • 替换波浪号为绝对路径:crontab中~不会被正确解析为用户家目录,所有路径都要写绝对路径,比如把脚本里的~/mcserver换成/home/你的用户名/mcserver
  • 指定screen和java的绝对路径:crontab的PATH变量不包含所有系统命令路径,先在命令行执行以下命令获取绝对路径:
    which screen  # 示例输出:/usr/bin/screen
    which java    # 示例输出:/usr/lib/jvm/java-17-openjdk-amd64/bin/java
    
    然后把脚本里的screen和java替换成上述绝对路径
  • server.jar用绝对路径:脚本里直接写server.jar会在crontab默认工作目录(通常是用户家目录)查找,必须改成/home/你的用户名/mcserver/server.jar

3. 完善脚本日志,方便排查问题

原脚本没有错误日志输出,无法定位失败原因,修改脚本如下(同时修正你脚本里重复的-Xmx参数,应该是初始堆-Xms+最大堆-Xmx):

#!/bin/sh
LOG_FILE="/home/你的用户名/mcserver/start.log"
echo "[$(date +'%Y-%m-%d %H:%M:%S')] 开始启动MC服务器..." >> $LOG_FILE
# 使用绝对路径的screen、java和server.jar,同时记录错误输出
/usr/bin/screen -dmS Server /usr/lib/jvm/java-17-openjdk-amd64/bin/java -Xms2G -Xmx7G -jar /home/你的用户名/mcserver/server.jar nogui >> $LOG_FILE 2>&1
# 追加当前screen会话列表,验证是否创建成功
echo "[$(date +'%Y-%m-%d %H:%M:%S')] 当前Screen会话列表:" >> $LOG_FILE
/usr/bin/screen -list >> $LOG_FILE 2>&1

4. 确认脚本权限

确保脚本有执行权限(虽然你命令行能运行,但crontab环境可能有差异):

chmod +x /home/你的用户名/mcserver/start.sh

5. 验证crontab配置

编辑完crontab后,重启cron服务生效:

sudo systemctl restart cron

可以手动重启服务器测试,或者用以下命令模拟crontab环境执行脚本,提前发现问题:

env -i PATH=/usr/bin:/bin /home/你的用户名/mcserver/start.sh

内容的提问来源于stack exchange,提问作者WillTheWA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:27:17