我在远程服务器上运行游戏服务器,我在其中使用分离的 screen 实例使其保持运行状态。 我现在正在创建一个脚本,可用于关闭服务器、备份所有重要文件并重新启动它,但是我在处理 screen 时遇到了一些困难。
我假设我可以通过在脚本中调用 screen -r 来切换到脚本中的分离 screen (在服务器已经关闭之后)。 但这似乎不起作用,因为如果我从外部 screen 运行脚本,它只会在该 session 中启动服务器。
screen -r
cd ~/servers/StarMade/
sh StarMade-dedicated-server-linux.sh
screen -d
这就是我认为可以解决问题的方法,但事实并非如此。也许有人可以在这里帮助我。我不是 bash 专家。事实上,这可能是我的第一个不包含“Hello World”的 bash 脚本。谢谢。
最佳答案
您的脚本,如您的示例,将由您的销售执行,而不是 screen 中的脚本。您需要告诉运行 screen 读取文件并执行它 - 这就是 -X 选项的用途。
尝试
tempfile=$(mktemp)
cat > $tempfile <<EOF
cd ~/servers/StarMade/
sh StarMade-dedicated-server-linux.sh
EOF
screen -X readbuf $tempfile
screen -X paste .
rm -f $tempfile
您可以让 screen 在第二个终端 session 中运行以查看会发生什么。
关于linux - 在 bash 脚本中使用 screen ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20880883/