linux - 在现有 screen 中创建新的 'screen'

标签 linux bash gnu-screen

我有一个游戏服务器。它通过 dotnet 在 linux 上运行。我在“screen ” session 中运行它。 但是我正在努力重新启动此服务器。 从外面看,很容易。我只是通过名称杀死现有 screen 并创建新 screen 。 但是,当我想从内部重新启动服务器时(现有游戏进程启动运行脚本的新进程,杀死命名 screen 并启动新进程)

具体来说:

停止.sh:

screen -r gameserver -X quit

start.sh:

screen -L -A -m -d -S gameserver /usr/bin/dotnet /gameserver/game.dll

重启.sh:

/gameserver/stop.sh
/gameserver/start.sh

现在,如果我从 screen 内部以编程方式运行 restart.sh,它会调用 stop.sh,这会终止当前 screen 以及此 restart.sh 脚本,因此新 screen 不会启动。

我尝试通过 screen 运行 restart.sh:

screen -L -m -d /bin/bash -c /gameserver/restart.sh

但是还是不行... 我希望这会在新 screen 中运行 restart.sh,其中“游戏服务器” screen 将终止并启动新 screen ,然后在该 screen 运行 restart.sh 后停止。但是没有:(

有什么想法吗?

最佳答案

你不能在 screen 内杀死这个进程吗? 有点像

screen -r gameserver kill $(ps aux|grep 'game.dll'|awk '{print $2}') ?

关于linux - 在现有 screen 中创建新的 'screen',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49720292/

相关文章:

c++ - 在不重启的情况下旋转日志,多进程问题

linux - 如何在 bash 中使用带有多个斜杠的 sed 命令

bash,emacs 绑定(bind)的数字前缀?

c - GDB + TUI + GNU Screen - 将 gdb 输出发送到不同的 screen

c++ - 如何在不将 'screen' 连接到终端的情况下运行它,以便我可以在 C++ (qt) 应用程序中捕获输出?

Java processbuilder - 如何执行 xargs 命令

gcc - 在 Linux 上编译/链接电子文本编辑器时出错

gnu-screen - 在 gnu screen 中使用 vim 或更少时,退出 vim 或更少会留下挥之不去的印记

php - UTF-8贯穿始终

bash - 是否有 `sh` 相当于 bash 的 `<<<' 重定向运算符?