web-dev-qa-db-ja.com

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

私は永久に実行するjar(ソケットリスニングスレッドによる無限ループ)を使用しており、常にバックグラウンドで実行する必要があります。たとえば、「Java -jar test.jar」のようになります。前もって感謝します!

12
Benny

いくつかの方法:

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

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

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

8
Lie Ryan

長い実行時間で常にログオフまで続くコマンドラインプロンプトは "Nohup"なので、あなたの場合は

Nohup Java -jar test.jar &

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

13
Ryan

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

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 での大きな説明

7
larsrc
Java -jar test.jar &

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

3
DamienL

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

Java -jar test.jar &
1
Matthew Mott

Java Service Wrapperのコミュニティバージョンをここから入手できます。

http://wrapper.tanukisoftware.org/doc/english/download.jsp

その後、再起動時に開始することができます。

http://wrapper.tanukisoftware.org/doc/english/launch-nix-boot-debian.html

1
tim_yates

& 最後に: Java -jar test.jar &

1