24
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Minecraft Bedrock Dedicated Serverをscreenで立ち上げる

バージョン

Ubuntu Server 18.04 LTS
Minecraft Bedrock Dedicated Server 1.7.0.13 alpha

現在のBedrock Dedicated Server(BDS)はアルファ版なので、仕様が変わる可能性は大いにあります。

結論(コマンド)

最初に結論から。
マニュアル記載の起動コマンド↓に対して

$ LD_LIBRARY_PATH=. ./bedrock_server

screenでBDSを起動するにはこう↓

$ LD_LIBRARY_PATH=. screen -S bds ./bedrock_server

上のコマンドだと作成したセッションにアタッチした状態で起動してしまうので、デタッチした状態で起動したい場合はこう↓

$ LD_LIBRARY_PATH=. screen -dmS bds ./bedrock_server

セッションをアタッチする(シェルからBDSのコンソールに移動する)にはscreen -r bds
セッションをデタッチする(BDSのコンソールからシェルに移動する)にはCtrl+a d

以下、screenコマンドの使い方など

マニュアル通りだと不便

SSHでUbuntuにログインしているような状態でマニュアル通り起動すると…

$ LD_LIBRARY_PATH=. ./bedrock_server
NO LOG FILE! - setting up server logging...
NO LOG FILE! - [2018-11-22 00:46:27 INFO] Starting Server
NO LOG FILE! - [2018-11-22 00:46:27 INFO] Version 1.7.0.13
NO LOG FILE! - [2018-11-22 00:46:27 INFO] Level Name: Bedrock level
NO LOG FILE! - [2018-11-22 00:46:27 INFO] Game mode: 0 Survival
NO LOG FILE! - [2018-11-22 00:46:27 INFO] Difficulty: 1 EASY
NO LOG FILE! - [2018-11-22 00:46:30 INFO] IPv4 supported, port: 19132
NO LOG FILE! - [2018-11-22 00:46:30 INFO] IPv6 supported, port: 19133
NO LOG FILE! - [2018-11-22 00:46:30 INFO] Server started.

この状態でSSHを切断するとBDSが落ちてしまいます。
また、BDSを実行したままシェルに戻れないので、メモリの使用率を見たり、バックアップを取ることができません。

ということで改良です。いったんBDSは終了させておきましょう。

stop

screenで起動

screenコマンドを使って新しいセッションでBDSを起動すると便利です。
Ubuntu(シェル)とBDSのコンソールを行ったり来たりできる上に、SSHを切断しても終了しません。

新しいセッションでBDSを起動する

$ LD_LIBRARY_PATH=. screen -S bds ./bedrock_server

「-S <セッション名>」でセッションに名前を付けることができます(上の例では「bds」というセッション名を指定)。
アタッチする際などに名前でセッションを指定できるので便利。

起動を確認したらCtrl+a dでセッションをデタッチすれば元のシェルに戻ってきます。
(デタッチしてもBDSは起動したままです)

[detached from 7039.bds]
$

便利なscreenコマンド

存在するセッションを確認したいときはscreen -ls

$ screen -ls
There is a screen on:
        7039.bds (11/22/2018 01:01:01 AM)        (Detached)
1 Socket in /run/screen/S-bds-user.

BDSのコンソールに戻りたい(セッションをアタッチしたい)ときはscreen -r <セッション名>

$ screen -r bds
...
NO LOG FILE! - [2018-11-22 01:02:28 INFO] IPv4 supported, port: 19132
NO LOG FILE! - [2018-11-22 01:02:28 INFO] IPv6 supported, port: 19133
NO LOG FILE! - [2018-11-22 01:02:29 INFO] Server started.

Ctrl+a dでセッションをデタッチします。


デタッチした状態でBDSにコマンド(stopなど)を送りたい場合はscreen -r <セッション名> -X stuff $"<コマンド>\n"

$ screen -r bds -X stuff $"stop\n"

ちなみにstopコマンドでBDSを終了させると、そのセッションも終了します。


デタッチした状態でBDSのコンソールに出力されている内容(ログ)をファイルに保存するときはscreen -r <セッション名> -X hardcopy -h <ファイル名>

$ screen -r bds -X hardcopy -h /home/bds-user/bds.log

-hを付けることでスクロールバックバッファも出力します。

おまけ:起動スクリプト・再起動スクリプト

起動スクリプト

bds_start.sh
#!/bin/bash

# bedrock_serverのディレクトリ
SERVER_DIR=/home/bds-user/minecraft
# セッション名
SESSION_NAME='bds'

cd ${SERVER_DIR}
LD_LIBRARY_PATH=. screen -dmS ${SESSION_NAME} ./bedrock_server

再起動スクリプト

bds_restart.sh
#!/bin/bash

# 起動スクリプト
START_SCRIPT=/home/bds-user/bds_start.sh
# セッション名
SESSION_NAME='bds'

# BDSにstopコマンド送信
screen -r ${SESSION_NAME} -X stuff $"stop\n"

# セッションが終了するのを待ちます
while true
do
  screen -r ${SESSION_NAME} -X select . > /dev/null || break
  sleep 1
done

# バックアップするならここで
# cp -a / rsync -a

${START_SCRIPT}

余裕があればバックアップしましょう。
BDSには終了せずにバックアップを取るためのsave hold save query save resumeもあります。

実行前にパーミッションの設定もお忘れなく

$ chmod +x bds_start.sh
$ chmod +x bds_restart.sh

参考:Minecraftサーバをscreenとcronでプラグインを使わずに自動再起動する

蛇足

LD_LIBRARY_PATH=. ./bedrock_serverが何をしているのか分かりませんでしたが、

$ HOGE=hello ./command.sh

のように実行することで変数(この場合HOGE)を渡せるんですね。知りませんでした。

command.sh
#!/bin/bash

echo ${HOGE} # hello
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
24
Help us understand the problem. What are the problem?