无法附加屏幕会话

时间:2015-07-21 07:45:56

标签: ubuntu startup gnu-screen

我正在运行Ubuntu Server 14.04.2 LTS。我试图使用init.d config将java app(minecraft)添加到启动中。这是一个片段:

MINECRAFT_DIR="/srv/minecraft-server"
START_COMMAND="java -Xincgc -Xmx8G -XX:MaxPermSize=128M -jar Spigot.jar"
SCREEN_NAME="minecraft-server"

attach() {
    screen -Rx $SCREEN_NAME
}

start() {
    echo "Starting minecraft server..."
    if cd $MINECRAFT_DIR && screen -dmS $SCREEN_NAME $START_COMMAND; then
        echo "Minecraft server started. Use 'sudo service minecraft attach'."
    fi
}

当我发布sudo service minecraft start一切正常时,我可以看到htop sudo screen -list中的屏幕会话打印出屏幕会话。我也可以将其附加到sudo service minecraft attachsudo screen -x

但在sudo update-rc.d minecraft defaults并重新启动服务器之后,虽然我可以在htop中看到屏幕会话,但它未列在sudo screen -list中,我再也无法附加它了!

我尝试使用crontabs作为root或我的用户但没有成功。

Here是我的完整init.d脚本。

1 个答案:

答案 0 :(得分:0)

你必须明确指定shell

bash -c "cd $MINECRAFT_DIR && screen -dmS $SCREEN_NAME $START_COMMAND"

或者如果您以用户身份运行它,您可以

USERNAME='minecraft'
INVOCATION="cd $MINECRAFT_DIR && screen -dmS $SCREEN_NAME $START_COMMAND"
su - "$USERNAME" -s /bin/bash -c "$INVOCATION"

感谢this提供了这个想法。