bashループを条件付きで停止し、/ stopコマンドをゲームサーバーに送信します。

bashループを条件付きで停止し、/ stopコマンドをゲームサーバーに送信します。

私はMinecraftサーバーがクラッシュまたは停止した場合に自動的に再起動するためにループを使用しています。これは競合やスケジュールされた再起動に役立ちますが、時にはサーバーを再起動するのではなく、サーバーを停止したい場合があります。

#!/bin/sh
while true
do
java ... args
sleep 5
done

理想的には、何とかこのループが終わるように言うことができます。そして/stop両方の操作を同時に実行する必要がないように、ワールドサーバーにコマンドを渡します。

私はシェルスクリプトに初めて触れたので、正しいアプローチはわかりません。

Ubuntu 18.xx(利用可能な場合)

ベストアンサー1

私はパンキのコメントに同意します。 Minecraftサーバーをサービスとして実行する方が良いようです。

デフォルトでは、「systemd」ディレクトリにいくつかのファイルを追加してプロセスを開始するように指示するときに、オペレーティングシステムがプロセスを実行し続け、停止するように指示した場合は、プロセスを停止できるようにする必要があります。

設定に役立つ多くのチュートリアルがあります。たとえば、

詳細:https://linuxconfig.org/how-to-create-systemd-service-unit-in-linux

フォローしやすさ:https://medium.com/@benmorel/creating-a-linux-service-with-systemd-611b5c8b91d6

Minecraft関連:https://linuxize.com/post/how-to-install-minecraft-server-on-ubuntu-18-04/#creating-systemd-unit-file

「開始」状態を維持するには、サービスに次の行を追加する必要があります。

Restart=always

また見なさい:https://serverfault.com/questions/611525/standard-or-best-way-to-keep-alive-process-started-by-init-d

おすすめ記事