Minecraft Bedrock Edition(BE)サーバーを運用する際、サーバーの起動、停止、さらにはゲーム内コマンドの実行を効率的に行うためのシェルスクリプトの解説です。今回紹介する3つのスクリプトは、tmux
を活用することで、サーバー管理をサポートします。
- start.sh: サーバーの起動を行うスクリプト
- stop.sh: サーバーを安全に停止するスクリプト
- exec.sh: サーバーにコマンドを送信し、その結果を取得するスクリプト
それぞれのスクリプトの使用方法と利便性について詳しく説明します。
※/home/ubuntu/server1にインストールされている
前提です。
1. サーバー起動スクリプト start.sh
スクリプト内容
#!/bin/bash
# サーバーのディレクトリ
SERVER_DIR="/home/ubuntu/server1"
# tmuxセッション名
SESSION_NAME="bedrock_server"
# サーバーの起動コマンド
SERVER_COMMAND="./bedrock_server"
# tmuxセッションが既に存在するか確認
if tmux has-session -t $SESSION_NAME 2>/dev/null; then
echo "サーバーは既に起動しています。"
else
# サーバーをtmuxセッションで起動
echo "サーバーを起動します..."
tmux new-session -d -s $SESSION_NAME "cd $SERVER_DIR && $SERVER_COMMAND"
echo "サーバーが起動しました。"
fi
使用方法
- このスクリプトを実行すると、
tmux
を使ってMinecraft BEサーバーがバックグラウンドで起動します。既にサーバーが起動している場合は「サーバーは既に起動しています」と表示され、二重起動を防ぎます。
./start.sh
利便性
tmux
を利用することで、サーバーがバックグラウンドで動作し続け、ターミナルを閉じてもサーバーが停止しません。- 同じセッション名で
tmux
を使うことで、サーバーの起動状態を簡単に確認でき、tmux
セッションに再接続してリアルタイムでログを確認することも可能です。
2. サーバー停止スクリプト stop.sh
スクリプト内容
#!/bin/bash
# tmuxセッション名
SESSION_NAME="bedrock_server"
# サーバーが起動しているか確認
if tmux has-session -t $SESSION_NAME 2>/dev/null; then
echo "サーバーを停止しています..."
tmux send-keys -t $SESSION_NAME "stop" ENTER
sleep 5 # サーバーが停止するのを待つ
tmux kill-session -t $SESSION_NAME
echo "サーバーが停止しました。"
else
echo "サーバーは起動していません。"
fi
使用方法
- このスクリプトを実行すると、サーバーに「stop」コマンドを送信し、サーバーを安全に停止します。その後、
tmux
セッションを終了させます。
./stop.sh
利便性
- サーバーを強制的に終了するのではなく、Minecraftの正規の
stop
コマンドを利用するため、データが損失するリスクを軽減できます。 tmux
セッションが自動で終了されるので、無駄なセッションが残らない設計になっています。
3. サーバーコマンド実行スクリプト exec.sh
スクリプト内容
#!/bin/bash
# tmuxセッション名
SESSION_NAME="bedrock_server"
# 引数で渡されたコマンド
COMMAND=$1
# サーバーが起動しているか確認
if tmux has-session -t $SESSION_NAME 2>/dev/null; then
if [ -z "$COMMAND" ]; then
echo "実行するコマンドを指定してください。"
else
echo "コマンド '$COMMAND' を実行します..."
# コマンドを送信
tmux send-keys -t $SESSION_NAME "$COMMAND" ENTER
# 少し待ってから結果をキャプチャ
sleep 2 # サーバーの応答を待つ
tmux capture-pane -t $SESSION_NAME -p > /tmp/tmux_output.log
# 結果を表示
echo "コマンドの実行結果:"
tail -n 20 /tmp/tmux_output.log # 最新の20行を表示
fi
else
echo "サーバーは起動していません。"
fi
使用方法
- このスクリプトを使うと、サーバーに任意のコマンドを送信して実行させ、その結果をターミナルに表示します。例えば、サーバー内のプレイヤーをリスト表示する場合は以下のように実行します。
./exec.sh "list"
利便性
- サーバーにコマンドをリアルタイムで送信し、その結果を表示するため、コンソールで手動操作を行う手間を省けます。
- コマンドの結果をキャプチャしてファイルに保存する機能があるため、複雑な出力や複数行の結果も確認しやすいです。
まとめ
これらのスクリプトは、tmux
を活用したMinecraft Bedrock Editionサーバーの管理を効率化するために設計されています。
- start.shでは、サーバーをバックグラウンドで安全に起動し、複数回の起動を防ぎます。
- stop.shでは、
stop
コマンドを使ってサーバーを正常に停止し、tmux
セッションも整理します。 - exec.shでは、サーバーに任意のコマンドを送信し、結果をリアルタイムで取得して表示することができます。
これらを使うことで、Minecraftサーバーの運用が格段に楽になります。手動操作を最小限に抑え、自動化と効率化を実現するこれらのスクリプトは、サーバー管理者にとって非常に有用です。
Visited 1 times, 1 visit(s) today
[…] Minecraft Bedrock Editionサーバーの起動・停止・コマンド実行シェルスクリプト… […]