linux - 在 bash 脚本中使用 screen

标签 linux bash gnu-screen

我在远程服务器上运行游戏服务器,我在其中使用分离的 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/

相关文章:

linux - bash 函数 $RANDOM 应该具有均匀分布吗?

c++ - 退出后从 C++ 程序永久设置环境变量

linux - "Must be connected to a terminal error"在 Linux 容器上使用 screen -x 命令

c - linux下如何获取随机文件?包括子目录

linux - 我可以为单个应用程序禁用 TCP 窗口缩放吗?

bash - 流程调度

bash - 使用 GNU screen 时如何避免 emacs(或 vi)在关闭后留在 screen 上?

shell - 将 ctrl-c 发送到特定 screen session

linux - 用于随机数生成的新建/dev 设备文件

android - 如何使用中国品牌平板电脑在 Linux 上启用 USB 调试?