一馬力のメモ帳

MVSからLinuxまで。基盤屋さんは眠らない

PocketMineMPをバックグランドで起動する方法。ログオフしてもOK

 毎度一馬力です。Minecraft PEも Realmsが追加になって
すっかりPocketMineMPの出番もなくなってしまいました。

www.appbank.net

そんな中でも,PocketMineMPの記事を探してこの
BLOGを見てくれるユーザーが一定数いるようなので,ログの意味で記事投稿しておきます。

バージョン等古い部分はご了承下さい

f:id:htbariki:20161105082601p:plain ※画像はMinecraft PEです。

という事で,今回はPocketMineMPをバックグランド動かす方法です。

PocketMineMPをlinuxで起動させると,shellの中で動くため
ログオフするとサーバーも停止してしまいます。

今回はscreenコマンドを利用する事により
バックグランドプロセスとしてPocketMineMPを起動して
shellからログオフしても停止しない状態を作ります。

  • 通常の起動方法

shell -> PocketMineMP :ログオフすると停止する

  • 通常の起動方法

shell -> PocketMineMP :ログオフすると停止する

目次


screenのインストール

まずはscreenのインストールから始めます。
インストールはyumコマンドで”yum install screen”を実行して下さい

[root@PocketMineMP ~]#
[root@PocketMineMP ~]# yum install screen
読み込んだプラグイン:fastestmirror, priorities
base                                                     | 3.6 kB     00:00
elrepo                                                   | 2.9 kB     00:00
epel/x86_64/metalink                                     | 4.6 kB     00:00
epel                                                     | 4.3 kB     00:00
extras                                                   | 3.4 kB     00:00
mysql-connectors-community                               | 2.5 kB     00:00
mysql-tools-community                                    | 2.5 kB     00:00
mysql56-community                                        | 2.5 kB     00:00
remi-safe                                                | 2.9 kB     00:00
rpmforge                                                 | 1.9 kB     00:00
updates                                                  | 3.4 kB     00:00
(1/7): mysql56-community/x86_64/primary_db                 | 122 kB   00:00
(2/7): extras/7/x86_64/primary_db                          | 117 kB   00:00
(3/7): epel/x86_64/updateinfo                              | 529 kB   00:00
(4/7): epel/x86_64/primary_db                              | 4.0 MB   00:00
(5/7): updates/7/x86_64/primary_db                         | 4.1 MB   00:00
(6/7): remi-safe/primary_db                                | 380 kB   00:00
(7/7): elrepo/primary_db                                   | 338 kB   00:01
Loading mirror speeds from cached hostfile
 * elrepo: ftp.ne.jp
 * epel: ftp.iij.ad.jp
 * remi-safe: remi.kazukioishi.net
 * rpmforge: ftp.riken.jp
155 packages excluded due to repository priority protections
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ screen.x86_64 0:4.1.0-0.23.20120314git3c2946.el7_2 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package    アーキテクチャー
                       バージョン                             リポジトリー
                                                                           容量
================================================================================
インストール中:
 screen     x86_64     4.1.0-0.23.20120314git3c2946.el7_2     updates     552 k

トランザクションの要約
================================================================================
インストール  1 パッケージ

総ダウンロード容量: 552 k
インストール容量: 914 k
Is this ok [y/d/N]: y
Downloading packages:
screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm                                                                     | 552 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64                                                                1/1
  検証中                  : screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64                                                                1/1

インストール:
  screen.x86_64 0:4.1.0-0.23.20120314git3c2946.el7_2

完了しました!
[root@PocketMineMP ~]#

バックグラドで起動

インストール完了したので早速起動です。 コマンドは

bash-4.2$ screen -dmS PocketMineMP ~/start.sh

オプションの意味は

  • -d -m : screen を "detached" モードで起動する。
  • -S セッション名 : 起動したセッションに名前をつけておきます。

です。詳しくはmanページ等で確認して下さい。
https://linuxjm.osdn.jp/html/GNU_screen/man1/screen.1.html

bash-4.2$ screen -dmS PocketMineMP ./start.sh
bash-4.2$
bash-4.2$ tail server.log
2016-04-21 [07:10:24] [Server thread/INFO]: Opening server on 0.0.0.0:19132
2016-04-21 [07:10:24] [Server thread/INFO]: This server is running PocketMine-MP version 1.6dev-23 "[REDACTED]" (API 2.0.0)
2016-04-21 [07:10:24] [Server thread/INFO]: PocketMine-MP is distributed under the LGPL License
2016-04-21 [07:10:25] [Server thread/INFO]: Loading recipes...
2016-04-21 [07:10:26] [Server thread/INFO]: Preparing level "world"
2016-04-21 [07:10:26] [Server thread/INFO]: Starting GS4 status listener
2016-04-21 [07:10:26] [Server thread/INFO]: Setting query port to 19132
2016-04-21 [07:10:26] [Server thread/INFO]: Query running on 0.0.0.0:19132
2016-04-21 [07:10:26] [Server thread/INFO]: Default game type: Creative Mode
2016-04-21 [07:10:26] [Server thread/INFO]: Done (1.818s)! For help, type "help" or "?"


bash-4.2$

バックグランドで起動したセッションをアタッチする

バックグランドで起動した後,操作の必要がある時などはアタッチして
セッションをフォアグラウンドに戻すことも可能です。

再度,セッションをデタッチする場合は
”ctrl を押しながら、A→D” で復帰できます。

bash-4.2$ screen -r

[07:10:24] [Server thread/WARNING]: Non-packaged PocketMine-MP installation detected, do not use on production.
[07:10:24] [Server thread/INFO]: Loading pocketmine.yml...
[07:10:24] [Server thread/INFO]: Loading server properties...
[07:10:24] [Server thread/INFO]: Selected English (eng) as the base language
[07:10:24] [Server thread/INFO]: Starting Minecraft: PE server version v0.14.1.0 alpha
[07:10:24] [Server thread/INFO]: Opening server on 0.0.0.0:19132
[07:10:24] [Server thread/INFO]: This server is running PocketMine-MP version 1.6dev-23 "[REDACTED]" (API 2.0.0)
[07:10:24] [Server thread/INFO]: PocketMine-MP is distributed under the LGPL License
[07:10:25] [Server thread/INFO]: Loading recipes...
[07:10:26] [Server thread/INFO]: Preparing level "world"
[07:10:26] [Server thread/INFO]: Starting GS4 status listener
[07:10:26] [Server thread/INFO]: Setting query port to 19132
[07:10:26] [Server thread/INFO]: Query running on 0.0.0.0:19132
[07:10:26] [Server thread/INFO]: Default game type: Creative Mode
[07:10:26] [Server thread/INFO]: Done (1.818s)! For help, type "help" or "?"

★”ctrl を押しながら、A→D”★

[detached from 22606.PocketMineMP]

バックグランド起動の確認

色々なパターンで,バックグランド起動が出来ている事を確認します。

screenコマンドで起動後

screenコマンドでバックグランド起動した直後

bash-4.2$ ps -ef|grep start.sh
mine     22606     1  0 16:10 ?        00:00:00 SCREEN -dmS PocketMineMP ./start.sh

バックグランドで起動できています。

screenコマンドを実行したユーザーががログオフ(exit)後

まずは,exitで抜けて

bash-4.2$ exit
exit

別ユーザ(今回はroot)で確認すると

[root@PocketMineMP ~]# netstat -anp|grep bash-4.2$
[root@PocketMineMP ~]#
[root@PocketMineMP ~]# netstat -anp|grep 19132
udp        0      0 0.0.0.0:19132           0.0.0.0:*                           22607/PocketMine-MP
[root@PocketMineMP ~]# ps -ef|grep start.sh
mine     22606     1  0 16:10 ?        00:00:00 SCREEN -dmS PocketMineMP ./start.sh
root     22661 22380  0 16:15 pts/0    00:00:00 grep --color=auto start.sh

正常に起動していますね^^

これでPocketMineMPを起動した後,ログオフしてもOKです。

参考資料

  • Minecraft PE マルチユーザサーバ[PocketMine-MP]をPCにセットアップする方法

http://dorodorodoroid.hatenablog.com/entry/2015/02/03/083148

試した環境

Minecraft PE用マルチプレイサーバー

PocketMine-MP version 1.6dev-23

OS

[root@PocketMineMP ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@PocketMineMP ~]# uname -a
Linux PocketMineMP 3.10.0-327.10.1.el7.x86_64 #1 SMP Tue Feb 16 17:03:50 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux