0

画面で実行されているMinecraftサーバーがあり、現在、次のようにJavaを開始するスクリプトにすぎません。

screen -dmS mc java -Xincgc -Xms1024M -jar craftbukkit-1.6.4-b2882.jar

screen -r mc基本的に、これはバックグラウンドの画面コンテナーで minecraft を起動するだけで、SSH 経由でアクセスできます。ただし、私がやりたいことは、プロセスをサーバーモニターで常に起動し、.ssh を使用してアクセスできるようにすることscreen -x mcです。また、2 時間ごとに停止コマンドを mc プロセスに詰め込み、start.sh スクリプトを実行する restart.sh スクリプトがあります。サーバーはランレベル 3 であるため、動作しないと思いますgnome-terminal -e "screen -x mc"。また、再起動スクリプトが画面外で mc を起動しているようです。サーバーにSSHでscreen -ls接続しても何も表示されませんが、Minecraftサーバープロセスが実行されており、接続できます。スクリプトは次のとおりです。

#!/bin/sh

screen -x mc
screen -s mc stuff "say Server Restarting in 15 minutes."
screen -s mc -X eval "stuff \015"
sleep 600
screen -x mc
screen -x mc -X stuff "say Server restarting in 5 minutes."
screen -s mc -X eval "stuff \015"
sleep 240
screen -x mc
screen -s mc -X stuff "say Server restarting in 1 minute."
screen -s mc -X eval "stuff \015"
sleep 60
screen -S mc -X stuff "say Server restarting."
screen -S mc -X eval "stuff \015"
screen -S -X stuff "kickall Server Restarting, it should be back up in about a minute."
screen -S mc -X eval "stuff \015"
sleep 2
screen -S mc -X stuff "stop"
screen -S mc -X eval "stuff \015"
sleep 30
screen -wipe
sleep 3
cd /minecraft/server/craftbukkit
./start.sh

何か案は?

4

1 に答える 1

0
screen -dmS mc command

<command> が完了するまでのみ存続する画面を開始します。
たとえば、Java が終了するたびに、画面も終了します。

代わりに、次のように画面を開始します。

screen -dmS mc bash
screen -s mc -X eval 'stuff "java -Xincgc -Xms1024M -jar craftbukkit-1.6.4-b2882.jar\015"'

それに応じて再起動します:

screen -s mc -X eval 'stuff "cd /minecraft/server/craftbukkit\015"'
screen -s mc -X eval 'stuff "./start.sh\015"'

お役に立てれば :)

ここには java/minecraft がないので、サンプルとして「読み取り」ツールを使用します。

screen -dmS mc bash                             # starts screen&bash
screen -s mc -X eval 'stuff "read\015"'         # tells bash to start "read"
screen -s mc -X eval 'stuff "test\015"'         # tells read the input "test"
screen -s mc -X eval 'stuff "echo \$REPLY\015"' # tells bash to echo the $REPLY var
screen -s mc -X eval 'stuff "cd /tmp\015"'      # tells bash to cd into /tmp

ご覧のとおり、スタッフは入力をbashではなく、一般的に画面に送信します。たとえば、bashで開始され、現在stdinを読み取っているアプリケーションに送信されます。

于 2013-09-24T05:42:51.033 に答える