在新的屏幕会话中启动命令不起作用

在新的屏幕会话中启动命令不起作用

我想在新的屏幕会话中执行命令(并从中分离),但我无法让它工作。我尝试在新的屏幕会话中启动一个进程,然后使用以下命令从中分离:

screen -d -m mycommmand

但是当我尝试使用

screen -r

我收到消息“没有要恢复的屏幕”。我还尝试在新的屏幕会话中启动命令

screen mycommand

当我这样做时,一个新的屏幕会话开始,但命令没有被执行。

该命令是一个启动游戏服务器的.sh脚本,但游戏服务器没有启动。

[编辑] 因为有些人要求提供确切的命令,所以这里是:这是一个 bash 脚本,应该在单独的屏幕会话中启动我的世界服务器。

./startServer.sh

这是.sh 脚本:

cd "/home/tim/minecraft/survivalServer"
screen -S "minecraft-server-1-14-4" -m -d /home/tim/java/bin/java -Xmx4096M -Xms1024M -jar /home/tim/minecraft/survivalServer/minecraft_server.1.14.4.jar nogui

现在的问题是,当我运行脚本时,它无法创建新的屏幕会话。这是为什么?

非常感谢您的帮助。谢谢

答案1

问题在于您尝试在分离屏幕实例内启动嵌套的分离屏幕实例。您的脚本包含以下行:

screen -S "minecraft-server-1-14-4" -m -d /home/tim/java/bin/java -Xmx4096M -Xms1024M -jar /home/tim/minecraft/survivalServer/minecraft_server.1.14.4.jar nogui

这将启动屏幕,命名屏幕会话minecraft-server-1-14-4,然后启动 minecraft 并分离。但您还试图运行screen -d -m ./startserver.sh。因此,在脚本中创建屏幕会话之前,您已经在分离的屏幕会话中运行该脚本。这……往往不太好用。

它的功能与此相同:

wolferz@khaos ~ $ screen -m -d screen -S 'mysession' -m -d top
wolferz@khaos ~ $ screen -r
There is a screen on:
        24850.mysession (07/24/2019 10:47:46 PM)        (Dead ???)
Remove dead screens with 'screen -wipe'.
There is no screen to be resumed.

您要做的就是直接运行脚本。只需执行./startserver.sh。这会让您返回提示符。然后,您可以像平常一样连接到您的 minecraft 控制台screen -r

相关内容