tmuxが必要です。
1. 起動スクリプトの作成
まずMinecraftサーバーがあるディレクトリに移動します。
今回は/home/ubuntu/mc-server
とし、ユーザーはubuntu
とします。
Minecraftサーバーの起動と終了に必要なboot.sh
を作成します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
TMUX_NAME=mcserver | |
case $1 in | |
start) | |
tmux new-session -s $TMUX_NAME -d "java -jar server.jar nogui";; | |
stop) | |
tmux send-keys -t $TMUX_NAME "say 10秒後にサーバーを停止します" Enter | |
sleep 10 | |
tmux send-keys -t $TMUX_NAME "save-all" Enter | |
sleep 5 | |
tmux send-keys -t $TMUX_NAME "stop" Enter | |
sleep 20;; | |
*) | |
echo "start | stop" | |
esac |
TMUX_NAME
はtmuxのセッション名です。
7行目のjava -jar server.jar nogui
は、サーバー本体のファイル名など環境によって適宜変更してください。
2. systemdのユニットファイルの作成
/etc/systemd/system
に適当な名前でユニットファイルを作成します。
今回はmcserver.service
とします。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Unit] | |
Description=Minecraft Server | |
After=network-online.target | |
[Service] | |
Type=forking | |
User=ubuntu | |
WorkingDirectory=/home/ubuntu/mc-server | |
ExecStart=/bin/bash /home/ubuntu/mc-server/boot.sh start | |
ExecStop=/bin/bash /home/ubuntu/mc-server/boot.sh stop | |
Restart=always | |
[Install] | |
WantedBy=multi-user.target |
ユニットファイル内のユーザーや作業ディレクトリ等も、環境によって適宜変更してください。
3. systemdに読み込ませる
$ sudo systemctl daemon-reload
sudo systemctl start mcserver
でMinecraftサーバーが起動し、stop
やrestart
ではサーバー内に通知してから停止できます。enable
すれば、システム起動時に自動的に立ち上げることができます。