Javaプロセスはまだ終了しています。

Javaプロセスはまだ終了しています。

大学サーバーでJavaプログラムを実行する必要があります。 SSH経由でサーバーを介してリモートでログインしました。

だから私は次のようにnohupを使います。

nohup java -jar project.jar &

ただし、ログアウトして端末を閉じて再度サーバーにログインすると、プロセスは失われ/終了します。

答え1

nohupSIGHUPプログラムを免疫し、信号を送りなさいSIGQUIT。最新のシェルは、セッションからログアウトするときに別のシグナルを送信できるためnohup

より良い解決策はまたはtmuxを使用することですscreen。またはを使用している場合は、bash次のことを試すことができます。

$ java -jar project.jar &
$ disown

答え2

(慢性機能障害)の代替nohup

setsid java -jar project.jar </dev/zero &>/dev/null &

これはプロセスを効果的に「保護」する。 initが所有しているため、HUPを取得できず、I / Oストリームが安全でバックグラウンドに分岐しました。

詳細についてはを参照してくださいman setsidscreenあるいは、それとは異なり、tmux所有権を主張して実行され続けるプログラムではありません。ただ独自のプログラムが始まるだけです。プロセスグループ

答え3

別のアイデアはscreenコマンドを使用することです。画面内でプログラムを起動、分離、およびログアウトできます。その後、ログインして実行画面セッションに接続できます。

指導時間:http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/

答え4

STDOUTとSTDERRをnullにリダイレクトしてnohupを実行してみてください。

nohup java -jar project.jar 2>&1 &

関連情報