
最近、Minecraftサーバーの運用を開始しました。
コンソールやパテを終了した後にプロセスを終了しない方法がわかりません。
コマンドは次のとおりです。
Java -jar minecraft_server.1.10.2.jar
しかし時々:
Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar
答え1
PuTTYを閉じると、コンピュータに切断信号が送信され、Minecraftを含むさまざまなプログラムでキャプチャされます。あなたできるnohup
Minecraftの標準出力と標準エラーを使用してファイル(または/dev/null
)にリダイレクトしますが、一部の人はインストールしてコンピュータでセッションを実行する方が簡単だと思いscreen
ますtmux
。これにより、screen / tmuxを閉じた後で後で戻ってメッセージを表示できます。
私は通常を使用しますがscreen
、これに比べて少ない数のキーストロークを使用しますtmux
。
- 走る
screen
- Enterキーを押してシェルを取得します
- Minecraftを実行する
- controlAd分離するには、(control / Aの後にd)を入力してください。
- パテを閉じる
これにより、いくつかの画面の基本構成が思い出されます。まだ端末を閉じるとセッションを閉じます。これが問題であれば、詳細を追加できますか?
答え2
私はRaspberry PiでTerrariaサーバーを実行していましたが、同じ問題が発生しました。
私のための解決策はscreen
を使用してインストールし、sudo apt install screen
Minecraftサーバーを実行します。ただし、screen
その前に実行してください。
コマンドは次のとおりです。
screen Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar
答え3
質問が100%確かではありませんが、とにかく答えます:)SSHターミナルエミュレータ(パテなど)を使用してリモートシステムに接続し、「フォアグラウンドプロセス」(例:Keep)を実行している場合、バックグラウンドで実行されるデーモン代わりにその端末で開きます)SSHセッションから切断すると終了します。バックグラウンドプロセス(デーモンなど)を実行すると、リモートセッションが終了した後も引き続き実行されます。 (プロセスを開始したコマンドの最後に&を追加してほとんどのフォアグラウンドプロセスを「デーモン化する」ことができます。)他のセッションでそのプロセスを終了するには、そのPID番号(たとえば、最ps aux | grep 'name_of_process'
上位プロセスを使用して取得)を知る必要があります。 。または、htopユーティリティを使用したり、コマンドをkillall name
実行したりするなど、さまざまな方法を使用できますscreen
。接続が失われると、バックグラウンドで分離され、次回のログイン時に実行中のすべてのプロセスがそのまま維持され、再接続できます。 (もちろん、彼らが死亡または殺された場合、彼らに関するすべてのものも死にます)。tmux
byobu
コマンドはJava -jarminecraft_server.1.10.2.jarですが、時にはJava -Xmx1024M -Xms1024M -jarminecraft_server.1.10.2.jarです。
バックグラウンドで停止している場合は、次のいずれかのコマンドを使用してログインしたときに終了できますkill
(killall java
これにより、実行中のすべてのJavaプロセスが終了します!)。または、ps aux |grep minecraft
「minecraft」という単語を含むすべてのプロセスが終了します(おそらくps aux | grepminecraftを含む)、ユーザー名の横の数字はPIDです。その後、kill PID
(PIDは前のコマンドの数です...)問題が解決します。もう一度実行して確認してくださいps aux |grep minecraft
。 (まだ実行している場合は、kill -9 PID
次の手順を試してください。)
答え4
これは、SSH セッションを閉じたときに SSH サーバーが実行していたすべてのプロセスを終了するために発生します。
これまでに提供されたソリューションでは、screen
基本的にターミナルセッションから切断してログアウトしてから、後で再接続してすべてのプロセスを実行し続ける方法を使用する方法について説明しています。
ただし、このソリューションは、サーバープロセスがクラッシュしたり、サーバーが再起動したり、その他の奇妙なことが発生した場合を考慮しません。
これを行うには、サーバーのシステムサービスの作成を確認することをお勧めします。このような定義方法はシステムによって異なりますが、一般的な原則は、依存関係が開始されるとサーバーが自動的にサービスを開始し、サービスが終了すると再起動するオプションがあることです。標準出力に書き込むのではなく、出力をログファイルに保存するように多くのプログラムに要求することもできます。
systemctl
端末に対応するコマンドがある場合は、おそらくsystemdがインストールされています。これはチュートリアルですシステムベースのシステム用のMinecraftサービスファイルの設定について説明しました。
そうでない場合は、systemctl
おそらくOpenRCベースまたはupstartベースのシステムを使用しています。そのような場合は、既存のサービスを調査/etc/init.d
し、それに基づいて独自のサービスを作成する必要があります。(このトピックに関する良いチュートリアルを知っている人がいる場合は編集してください!)