大学サーバーでJavaプログラムを実行する必要があります。 SSH経由でサーバーを介してリモートでログインしました。
だから私は次のようにnohupを使います。
nohup java -jar project.jar &
ただし、ログアウトして端末を閉じて再度サーバーにログインすると、プロセスは失われ/終了します。
答え1
nohup
SIGHUP
プログラムを免疫し、信号を送りなさい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 setsid
。screen
あるいは、それとは異なり、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 &