Scripting

自動重啟“螢幕”腳本不起作用

  • August 13, 2013

我正在查看一個腳本,該腳本實際上會在遊戲伺服器崩潰時重新啟動。遊戲伺服器實際上是通過控制面板在螢幕會話中啟動的。必須通過終止各自的螢幕會話並在具有相同名稱的新螢幕會話中再次啟動它們來重新啟動它們。我自己完成了這個腳本,但它並沒有真正起作用並且遇到錯誤。

#!/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”,我也可以使用上面的命令殺死一個同名的螢幕。我相信控制面板中有一些東西以不同的方式啟動它,以至於它無法使用名稱附加。

哦,來吧,不要為此使用螢幕。

使用實際上旨在照顧程序的東西,並在它們死亡時重新啟動/重生它們。

其他任何東西都只是輪子改造,永遠不會那麼好或經過測試。

引用自:https://serverfault.com/questions/530605