私はLinuxに初めて触れたので、愚かな質問かもしれませんが、とにかく:私と友人のためにMinecraftサーバーを実行するためにコンピュータにCentOS 8仮想マシンを作成しました。このガイド。したがって、正しく理解した場合は、サーバーに対して別のLinuxユーザーを作成し、システムの電源を入れるたびにサーバーがsystemdサービスとして起動しました。
サーバーが自動的に起動すると便利ですが、1つの問題がありますが、サーバーコンソールが利用できないことです。コンソールを使用するために見つけた唯一の方法は、サービスと共にスクリーンセッションを使用することです。しかし、Linuxを初めて使用するので、どうすればいいかわかりません(minecraft.serviceに何かを追加する必要がありますか?ファイル?)。私のMinecraft.serviceファイルは次のとおりです。
[Unit]
Description=Minecraft Server
After=network.target
[Service]
User=minecraft
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xmx2048M -Xms1024M -jar server.jar nogui
ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p mypassword stop
[Install]
WantedBy=multi-user.target
とにかく私の質問は、画面機能を使用してサーバーを実行する方法ですか、それとも良い方法がありますか?
答え1
開始ディレクティブを変更してくださいminecraft.service
。
ExecStart=/usr/bin/java -Xmx2048M -Xms1024M -jar server.jar nogui
到着する:
ExecStart=/usr/bin/screen -DmS minecraft-screen /usr/bin/java -Xmx2048M -Xms1024M -jar server.jar nogui
minecraft-screen
画面名だけを好きなように変更できます。
答え2
まず、私は個人的にMinecraftサーバーをホストしません。私はちょうど私の友人が彼のサーバーをシステムサービスに変えるのを助けました。
サーバー構成でRCONを有効にする必要があります(すでに持っているとします)。その後、端末の起動後にmcrconを使用してサーバーに接続できます。
mcrcon -h <ip> -P <port> -t
これにより、サービス(-t)ではなくサーバーを実行したときに通常表示されるライブ端末が提供されます。
私はLinuxに精通していないと述べたので、ユースケースについていくつかの追加の説明があります。
mcrcon コマンドが PATH 変数にない可能性があります。したがって、上記のコードブロックの構文を実行すると、そのコマンドが見つからないというエラーが発生する可能性があります。この場合、サービスファイルの機能を維持するには、/opt/minecraft/tools/mcrcon/mcrcon(mcrcon実行可能ファイルへのパス)を/ usrなどのPATHに既に存在する場所にシンボリックリンクする必要があります。 /ゴミ
ln -s /opt/minecraft/tools/mcrcon/mcrcon /usr/bin/mcrcon
これにより、ディレクトリを/opt/minecraft/tools/mcrcon/に変更し、./mcrconで実行するか、フルパス/opt/minecraft/tools/mcrcon/mcrconを使用してmcrconを実行することなく、すべての作業ディレクトリでmcrconを実行できます。あります。 。
編集する
RCONを使用しても表示されなくなる一般的なSTDOUTログメッセージは、Minecraftサーバーディレクトリ内のログサブディレクトリにあるserver.logに記録され続ける必要があります。
答え3
追加してみてください
Type=oneshot
RemainAfterExit=yes
[サービス]セクションに移動
CentOSでは、サービスは/ etc / systemd / systemになければなりません。
したがって、投稿に提供したコンテンツを使用して上記のディレクトリにminecraft_server.serviceファイルを作成する必要があります。
[Unit]
Description=Minecraft Server
After=network.target
[Service]
User=minecraft
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xmx2048M -Xms1024M -jar server.jar nogui
ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p mypassword stop
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
次に、次のコマンドを実行します。
sudo systemctl daemon-reload
新しいサービスを追加するときに必要です。
次に、次のコマンドを入力します。
sudo systemctl start minecraft_server.service
サーバーの起動中にサービスを開始するには、有効にするだけです。
sudo systemctl enable minecraft_server.service
即時開始の停止と再起動を使用してサービスを停止または再起動することもできます。
私はMinecraftをやったこともなく、これからもしないし、慣れていません。私はsystemdにサービスを追加する方法だけを知っています。
このウェブサイトはsystemctlの使い方を説明します。 Systemctlを使用してSystemdサービスとデバイスを管理する方法