0

私が書いたこの非常に単純なシェルスクリプトを変更して、画面が既にアクティブになっているかどうかを確認し、アクティブな場合は作成しないようにしています。たとえば、このスクリプトをstartパラメーターで 2 回呼び出すと、4 つの画面セッションが作成されます。それを防ぎたい。

#! /bin/sh
# /etc/init.d/css-server
#

case "$1" in
  start)
    echo "Starting Nullus Imprimis war server..."
    screen -A -m -d -S css-war-server /home/css-servers/war-server/css/srcds_run -game cstrike +map de_dust2 +maxplayers 16 -autoupdate -port 2555
    echo "Nullus Imprimis war server started"
    echo "Starting Nullus Imprimis pub server #1..."
    screen -A -m -d -S css-pub-server-1 /home/css-servers/pub-server-1/css/srcds_run -game cstrike +map de_dust2 +maxplayers 32 -autoupdate -port 2666
    echo "Nullus Imprimis pub server #1 started"
    ;;
  stop)
    echo "Stopping Nullus Imprimis war server..."
    screen -S css-war-server -X quit
    echo "Nullus Imprimis war server stopped"
    echo "Stopping Nullus Imprimis pub server #1..."
    screen -S css-pub-server-1 -X quit
    echo "Nullus Imprimis pub server #1 stopped"
    ;;
  *)
    echo "Usage: service css-servers {start|stop}"
    exit 1
    ;;
esac

exit 0

また、サーバーを独自のユーザー名 (この場合はcss-servers. どうやってやるの?

4

1 に答える 1

1

画面が既に実行されているかどうかを確認するには、通常、次のように grep しscreen -lsます。

screen -ls | grep -q NAME || ...do something if server is not running...

または:

if ! screen -ls | grep -q NAME; then
  ...do something if server is not running...
fi

これを別のユーザーとして実行するにはsudo -u、次のように起動スクリプトを実行することをお勧めします。

sudo -u css-servers STARTUP_SCRIPT
于 2012-07-17T17:13:14.563 に答える