我有一个脚本,它启动一个新的 tmux 会话并运行 Minecraft 启动命令,如下所示:
#!/bin/bash
# Create a new session and run a command inside the session
tmux new-session -d -s mc
tmux set-option -t mc set-remain-on-exit on
tmux send-keys -t mc "java -Xmx6G -jar fabric-server-mc.1.19.4-loader.0.14.19-launcher.0.11.2.jar nogui" Enter
我可以手动运行类似的脚本,它启动得很好,我可以看到 Minecraft 服务器运行并从那里访问它的 CLI。我说的是“类似的脚本”,但它只是缺少set-remain-on-exit on
(从 crontab 运行 tmux 所需的)并附加会话,这与问题无关。
虽然我已经使用 crontab 在启动时启动该脚本并且 tmux 确实可以工作,但附加会话后显示的所有内容都是:
Error: Unable to access jarfile fabric-server-mc.1.19.4-loader.0.14.19-launcher.0.11.2.jar
我尝试过chmod +x
、、chmod 755
和chmod 777
脚本,但运气不佳。我不确定为什么从 crontab 启动时无法访问 jarfile,有人知道原因吗?
编辑:尝试指定整个 java 路径(/usr/bin/java
)也无济于事。
我发现,当从其所在目录之外的任何位置加载它时,jarfile 将无法访问,这自然也会影响 cron,所以我该如何解决这个问题,至少对于 cron 来说?
答案1
为了解决这个问题,我需要在启动脚本中添加目录来指定 jarfile 的位置,尽管启动脚本位于同一位置。
#!/bin/bash
#set the working directory
cd /home/minecraft/fabric-1.19.4
# Create a new session and run a command inside the session
tmux new-session -d -s mc
tmux set-option -t mc set-remain-on-exit on
tmux send-keys -t mc "java -Xmx6G -jar fabric-server-mc.1.19.4-loader.0.14.19-launcher.0.11.2.jar nogui" Enter