大学のサーバーでJavaプログラムを実行する必要があります。ssh経由でサーバーからリモートでログインしています。
だから私はそのようにNohupを使いました:
Nohup Java -jar project.jar &
ただし、ログアウトしてターミナルを閉じてからサーバーに再度ログインすると、プロセスが見つからないか、強制終了されます。
Nohup
は、プログラムにSIGHUP
およびSIGQUIT
シグナルの影響を受けないようにします。 Modern Shellは、セッションからログアウトするときに他の信号を送信する可能性があるため、Nohup
の下で実行されている場合でも、プログラムが強制終了されないという保証はありません。
より良い解決策は、tmux
またはscreen
を使用することです。または、bash
を使用する場合は、以下を試すことができます。
$ Java -jar project.jar &
$ disown
(慢性的に機能しない)Nohup
の代わりのさらに別のオプション:
setsid Java -jar project.jar </dev/zero &>/dev/null &
これは効果的にプロセスを「デーモン化」します。現在はinitが所有しているため、HUPされることはなく、I/Oストリームは安全であり、バックグラウンドに分岐されています。
見る man setsid
詳細については。 screen
やtmux
とは異なり、これは所有権を主張して実行し続けるプログラムではありません。独自の プロセスグループ でプログラムを起動するだけです。
もう1つのアイデアは、screenコマンドを使用することです。画面なしでプログラムを起動し、デタッチしてログアウトすることができます。その後、ログインして実行中のスクリーンセッションにアタッチできます。
チュートリアル: http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/