web-dev-qa-db-ja.com

Linux MinecraftサーバーはPuttyを終了すると閉じますか?

最近、Minecraftサーバーを実行し始めました。

コンソールまたはPuTTYを終了した後、プロセスを強制終了しない方法を見つけることができませんでした。

コマンドは次のとおりです。

Java -jar minecraft_server.1.10.2.jar

でも時々:

Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar
3
Ben

PuTTYを閉じると、ハングアップ信号がコンピューターに送信され、コンピューターがさまざまなプログラム(Minecraftを含む)にキャッチされます。あなたcouldNohupを使用し、minecraftの標準出力と標準エラーをファイル(または/dev/null)ですが、screenまたはtmuxをインストールして、コンピューターで実行しているセッションを残す方が簡単だと考える人もいます。そうすれば、screen/tmuxを閉じたときに、後で戻ってメッセージを確認できます。

私は通常screenを使用します。これはtmuxよりも少ないキーストロークを使用します。例えば、

  • screenを実行します
  • シェルを取得するにはReturnキーを押してください
  • minecraftを実行する
  • タイプ controlAd (control/Aの後にd)切り離す
  • puTTYを閉じる

一部の画面のデフォルト設定stillは、端末を閉じるときにセッションを閉じることを思い出させます。それが問題である場合、詳細を追加できます...

4
Thomas Dickey

以前はRaspberry PiでTerrariaサーバーを実行していましたが、同じ問題がありました。

私にとっての解決策はscreenでした

Sudo apt install screenを使用してインストールし、次にminecraftサーバーを実行しますが、その前にscreenを置きます。

コマンドは次のようになります:screen Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar

1
xxfoofyxx

これが発生する理由は、SSHセッションを閉じると、SSHサーバーが実行していたすべてのプロセスを強制終了するためです。

ここまでのソリューションでは、screenの使用について説明しています。これにより、基本的にはターミナルセッションから切断し、ログアウトして、後で再接続することができます。すべてのプロセスを実行したままにします。

ただし、このソリューションでは、サーバープロセスのクラッシュ、サーバーの再起動、その他の奇妙なことが考慮されていません。

そのためには、サーバーのシステムサービスを作成する方法を調査することをお勧めします。そのようなものをどのように定義するかはシステムによって異なりますが、一般的な原則は、依存関係が起動するとサービスがサーバーによって自動的に開始され、停止した場合はオプションで再起動するというものです。多くのプログラムに、標準出力に書き込む代わりに、ログファイルに出力を保存するよう要求することもできます。

ターミナルにsystemctlコマンドがある場合は、おそらくsystemdです。 チュートリアルはこちら systemdベースのシステム用のminecraftサービスファイルの設定で見つけました。

systemctlがない場合は、おそらくOpenRCベースのシステムまたは新興企業ベースのシステムのどちらかを使用しています。このような場合は、/etc/init.dの既存のサービスを調査し、それに基づいて独自のサービスを作成する必要があります。 (この問題についての良いチュートリアルを知っている人がいたら、tを編集してください!)

0

私はあなたが何を求めているのか100%わかりませんが、とにかく答えようとします:) sshを使用してリモートシステムに接続し、ターミナルエミュレータ(たとえば、PuTTY)を実行し、「フォアグラウンドプロセス」(つまり、その端末でバックグラウンドで実行されるデーモンではなく開いたままにします)、sshセッションから切断すると、そのプロセスは終了します。バックグラウンドプロセス(デーモンなど)を実行すると、リモートセッションが終了した後も引き続き実行されます。 (そのプロセスを開始するコマンドの最後に&を追加することで、ほとんどのフォアグラウンドプロセスを「デーモン化」できます。)別のセッションからプロセスを強制終了するには、そのPID番号(たとえば、_ps aux | grep 'name_of_process'_またはtopを使用して取得)を知る必要があります。またはhtopユーティリティ、または_killall name_コマンドを発行することで...そしておそらく他の数十の方法)。一方、フォアグラウンドプロセスをセッション間で存続させるには、screentmuxまたはbyobuターミナルマルチプレクサなどを使用する必要があります。切断時にバックグラウンドにデタッチし、次回ログインしたときに再接続できます。プロセス内で実行されているすべてのプロセスはそのままです。 (もちろん、彼らが死んだり殺されたりした場合、彼らのすべても死ぬ)。

コマンドはJava -jar minecraft_server.1.10.2.jarですが、ときどきJava -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar

バックグラウンドに留まっている場合は、次回killコマンドのいずれか、_killall Java_(実行中のすべてのJavaプロセスを強制終了します!)または_ps aux |grep minecraft_は、「minecraft」という単語が含まれるすべてのプロセスを吐き出します(おそらくps aux | grep minecraftを含む)。ユーザー名の横の数字はPIDです。次に、_kill PID_(ここで、PIDは前のコマンドからの番号です......)トリックを実行する必要があります。もう一度_ps aux |grep minecraft_を実行して確認します(まだ実行中の場合は、次に_kill -9 PID_を試してください)。

0
Jan Stavěl