自动重启“屏幕”脚本不起作用

自动重启“屏幕”脚本不起作用

我正在查看一个脚本,该脚本实际上会在游戏服务器崩溃时重新启动它们。游戏服务器实际上是通过控制面板在屏幕会话中启动的。必须通过终止各自的屏幕会话并在具有相同名称的新屏幕会话中重新启动它们来重新启动它们。我自己编写了这个脚本,但它并没有真正起作用并且遇到了错误。

#!/bin/bash

START='cd /home/test; ./GameServer +set parameters'
SCREEN_NAME="test"


while /bin/true; do


sleep 5
SERVER=`ps --User test | grep GameServer | grep -v grep | wc -l`

 if [[ $SERVER -eq "0" ]]; then
    screen -S $SCREEN_NAME-X quit ; screen -S $SCREEN_NAME -md $START
    sleep 10
 fi
done

该进程名称是“gameserver”,问题在于终止屏幕会话,因为它不会退出,如果我终止所有屏幕会话,运行脚本的屏幕也会退出。

test@de:~$ screen -list
There is a screen on:
        31861.2-test    (08/11/13 12:51:06)     (Detached)
1 Socket in /var/run/screen/S-test.

test@de:~$ screen -r 2-test -X quit
No screen session found.
test@de:~$ screen -x 2-test -X quit
No screen session found.
test@de:~$ screen -S 2-test -X quit
No screen session found.

我虽然可以通过“screen -x”附加到上面的屏幕,并且如果我以“screen -S test”启动它,我也可以使用上述命令关闭同名的屏幕。我相信控制面板中有一些东西以不同的方式启动它,因此无法使用该名称进行附加。

答案1

噢,拜托,不要用屏幕来做这个。

使用专门设计用来管理进程的程序,当进程终止时,重新启动/重生它们。

其他任何事情都只是重新发明轮子,并且永远不会像现在这么好或经过测试。

相关内容