最近、Minecraftサーバーを実行し始めました。
コンソールまたはPuTTYを終了した後、プロセスを強制終了しない方法を見つけることができませんでした。
コマンドは次のとおりです。
Java -jar minecraft_server.1.10.2.jar
でも時々:
Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar
PuTTYを閉じると、ハングアップ信号がコンピューターに送信され、コンピューターがさまざまなプログラム(Minecraftを含む)にキャッチされます。あなたcouldNohup
を使用し、minecraftの標準出力と標準エラーをファイル(または/dev/null
)ですが、screen
またはtmux
をインストールして、コンピューターで実行しているセッションを残す方が簡単だと考える人もいます。そうすれば、screen/tmuxを閉じたときに、後で戻ってメッセージを確認できます。
私は通常screen
を使用します。これはtmux
よりも少ないキーストロークを使用します。例えば、
screen
を実行します一部の画面のデフォルト設定stillは、端末を閉じるときにセッションを閉じることを思い出させます。それが問題である場合、詳細を追加できます...
以前はRaspberry PiでTerrariaサーバーを実行していましたが、同じ問題がありました。
私にとっての解決策はscreen
でした
Sudo apt install screen
を使用してインストールし、次にminecraftサーバーを実行しますが、その前にscreen
を置きます。
コマンドは次のようになります:screen Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar
これが発生する理由は、SSHセッションを閉じると、SSHサーバーが実行していたすべてのプロセスを強制終了するためです。
ここまでのソリューションでは、screen
の使用について説明しています。これにより、基本的にはターミナルセッションから切断し、ログアウトして、後で再接続することができます。すべてのプロセスを実行したままにします。
ただし、このソリューションでは、サーバープロセスのクラッシュ、サーバーの再起動、その他の奇妙なことが考慮されていません。
そのためには、サーバーのシステムサービスを作成する方法を調査することをお勧めします。そのようなものをどのように定義するかはシステムによって異なりますが、一般的な原則は、依存関係が起動するとサービスがサーバーによって自動的に開始され、停止した場合はオプションで再起動するというものです。多くのプログラムに、標準出力に書き込む代わりに、ログファイルに出力を保存するよう要求することもできます。
ターミナルにsystemctl
コマンドがある場合は、おそらくsystemdです。 チュートリアルはこちら systemdベースのシステム用のminecraftサービスファイルの設定で見つけました。
systemctl
がない場合は、おそらくOpenRCベースのシステムまたは新興企業ベースのシステムのどちらかを使用しています。このような場合は、/etc/init.d
の既存のサービスを調査し、それに基づいて独自のサービスを作成する必要があります。 (この問題についての良いチュートリアルを知っている人がいたら、tを編集してください!)
私はあなたが何を求めているのか100%わかりませんが、とにかく答えようとします:) sshを使用してリモートシステムに接続し、ターミナルエミュレータ(たとえば、PuTTY)を実行し、「フォアグラウンドプロセス」(つまり、その端末でバックグラウンドで実行されるデーモンではなく開いたままにします)、sshセッションから切断すると、そのプロセスは終了します。バックグラウンドプロセス(デーモンなど)を実行すると、リモートセッションが終了した後も引き続き実行されます。 (そのプロセスを開始するコマンドの最後に&を追加することで、ほとんどのフォアグラウンドプロセスを「デーモン化」できます。)別のセッションからプロセスを強制終了するには、そのPID番号(たとえば、_ps aux | grep 'name_of_process'
_またはtopを使用して取得)を知る必要があります。またはhtopユーティリティ、または_killall name
_コマンドを発行することで...そしておそらく他の数十の方法)。一方、フォアグラウンドプロセスをセッション間で存続させるには、screen
、tmux
または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
_を試してください)。