LinuxでバックグラウンドでJarを実行する


11

私は永遠に実行するjarファイルを持っています(ソケットリスニングスレッドで無限ループ)、それを常にバックグラウンドで実行する必要があります。例は次のとおりです。「java -jar test.jar」これを行うにはどうすればよいですか?前もって感謝します!

回答:


8

いくつかの方法:

  1. 後ろに追加&します。ただし、これを使用すると、プログラムを開始した端末を閉じた場合、プログラムは終了します。

  2. [スタートscreenセッションを、その内部のプログラムを開始。screenセッションを切断してターミナルを閉じることができます。後で、セッションに再度アタッチして、あたかもずっとそこにいたかのようにコンソールに戻ることができます。ただし、プログラムを実行する前にスクリーンセッションを開始する必要があります。それを忘れた場合は、何もできません。

  3. disownシェルからジョブ制御を使用します。これにより、ttyからタスクが切り離され、ttyが閉じられてもプログラムは終了しません。しかし、見捨てられた仕事を再び付ける方法はないと思います。


12

私がいつもログオフまで続く長い実行時間に使用したコマンドラインプロンプトは「nohup」ですので、あなたの場合は

nohup java -jar test.jar &

&は重要であるため、別のシェルを実行できます。これは再起動後も続かないと思います。


7

「いつでも」ということは、マシンの起動時に起動するという意味であれば、起動時スクリプトの一部として起動する必要があります。これを行う汚い方法は、追加することです

java -jar test.jar> / dev / null 2>&1&

/etc/rc.localに(または/ dev / nullをお気に入りのログファイルに置き換えて)。

より適切なのは、適切なランレベルで開始するinit.dスクリプトを作成することです(たとえば、ランレベル0、1、または6では必要ない場合があります)。そうすれば、死んだ場合に自動的に再起動し、一時的に停止するためのより優れたインターフェイスを使用することもできます。

http://www.howtoforge.com/forums/archive/index.php/t-3628.htmlの小さなサンプル

http://developer.novell.com/wiki/index.php/Writing_Init_Scriptsでの大きな説明


別の可能性として、ユーザーの権限だけで実行したい場合は、cronに入れて実行時間として「@reboot」を使用します。詳細については、「man 5 crontab」を参照してください。
pjz

3
java -jar test.jar &

&演算子は、プロセスをバックグラウンドで強制的に実行します。その後、「top」コマンドを実行して、実行されていることを確認できます。


1

Linuxでは、コマンドラインの最後に「&」記号を追加することにより、バックグラウンドで任意のタスクを実行できます。たとえば、

java -jar test.jar &


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.