
私は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