スクリプトで端末の画面プロセスを開く

スクリプトで端末の画面プロセスを開く

画面にMinecraftサーバーが実行されていますが、今は次のようにJavaを起動するスクリプトです。

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

デフォルトでは、これはSSHを介してアクセスできるバックグラウンドの画面コンテナでMinecraftを実行しますscreen -r mc。しかし、私が望むのは、プロセスが常にサーバーモニターで実行され、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

どんなアイデアがありますか?

ベストアンサー1

これは4つの部分で構成されています。

  1. 牛に似た一種の栄養screen
  2. Minecraftを起動して死んで再起動するスクリプト(例:呼び出しstart-minecraft.sh
  3. start-minecraft.sh画面内でこのスクリプトを実行するための起動スクリプトです。suスクリーンセッションとMinecraftサーバープロセスを所有するuidで使用または実行する必要がありますsudostart-minecraft.shこれは/etc/inittabや/etc/rc.localなどで実行できます。
  4. クローン操作は2時間ごとにMinecraftサーバーをシャットダウンします。

start-minecraft.shMCを再起動する間に短いスリープモードを持つことができる単純なMinecraft無限ループラッパーでなければなりません。スクリプトの最小バージョンは次のとおりです。

#! /bin/sh

# set PATH and other env variables here, if required
# ...

while true; do
   java -Xincgc -Xms1024M -jar craftbukkit-1.6.4-b2882.jar
   sleep 30
done

内部的にスクリプトを実行するscreen方法の1つは次のとおりです。

screen -d -RR minecraft -t minecraft /path/to/start-minecraft.sh

存在する場合はscreen「minecraft」という既存の画面セッションに接続するように指示し、存在しない場合はその名前で新しいセッションを作成し、画面内に「minecraft」というタイトルの単一のタブを作成して起動を実行します。 minecraft.shスクリプトが含まれています。

ユーザーが実行している画面に~/.screenrcファイルがある場合は、画面の-cオプションを使用してプロファイルまたはカスタムファイルを使用せずにそのファイルを上書きすることもできます。screen -c /dev/null ...

これにより、画面を起動する2番目の方法が表示されます。.screenrc次の2行を含むMinecraft用のカスタムファイルを作成します。

screen -t bash  1 bash
screen -t minecraft  0 /path/to/start-minecraft.sh 

これにより、画面内に2つの「ウィンドウ」が作成されます。 1つはbashを実行し、もう1つはMinecraftを実行します。 Minecraftはウィンドウ0から最後に始まるので、接続すると最初のウィンドウが表示されます。

画面の起動に使用する方法に関係なく、後でこの画面セッションに手動で接続できます(たとえば、端末からまたはSSHを介して接続)screen -d -RR minecraft

後者の方法(ユーザー定義〜/ .screenrc)が優先されます。それが死んだ場合(たとえば、Minecraftサーバーを一時的にオフラインにするためにシャットダウンしたため)、start-minecraft.sh新しい「ウィンドウ」を作成してstart-minecraft.shを手動で実行してscreen再起動できます。

おすすめ記事