![创建一个用于‘screen’的 shell 脚本?](https://linux22.com/image/1142953/%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%94%A8%E4%BA%8E%E2%80%98screen%E2%80%99%E7%9A%84%20shell%20%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我一直在研究如何创建一个 shell 脚本,浏览了包括这个论坛在内的各种论坛,使用各种搜索词,但都没有找到结果。希望我没有重复提问。
我们有一个游戏服务器,在重启或崩溃后必须手动初始化屏幕,但想将我们的几个命令打包成一个脚本以减少停机时间。我想要做的是制作一个脚本,创建一个屏幕会话,切换到它,并在新会话中执行 shell 脚本。
我已经在 shell 脚本中尝试了下面的代码。
#!/bin/sh
screen -S tf2
./startserver.sh
当我执行脚本时,它会创建屏幕‘tf2’并按照我的意愿进入会话。然而,服务器并没有在我想要的地方启动,而是在我执行它的屏幕会话之外启动。我们需要它位于屏幕会话内,这样我们的游戏服务器就可以在线,而无需任何人访问终端。
我还不是 shell 脚本方面的高手,但我愿意学习。我做错了什么吗?还有其他方法吗?
答案1
如概要中所述,man screen
如果您想在屏幕上运行命令,则需要将其附加到发出命令的屏幕上。因此,在您的情况下,它看起来像
#!/bin/sh
screen -S tf2 ./startserver.sh
然而,由于我不知道你的 shell 脚本是否在屏幕的工作目录中,所以这样做更聪明
#!/bin/sh
screen -S tf2 /full/path/to/startserver.sh