
永久に実行される jar (ソケット リスニング スレッドによる無限ループ) があり、常にバックグラウンドで実行する必要があります。例: "java -jar test.jar" これを実行するにはどうすればよいでしょうか? よろしくお願いします!
答え1
いくつかの方法:
最後尾に追加します
&
。ただし、これを使用すると、プログラムを起動したターミナルを閉じると、プログラムは終了してしまいます。セッションを開始し
screen
、その中でプログラムを開始します。セッションをデタッチしscreen
てターミナルを閉じることができます。後でセッションに再度接続すると、最初からそこにいたかのようにコンソールに戻ることができます。ただし、プログラムを実行する前にスクリーン セッションを開始する必要があり、それを忘れた場合は何もできません。シェルからジョブ制御を使用します
disown
。これにより、タスクが tty から切り離され、tty が閉じられてもプログラムは終了しません。ただし、切り離されたジョブを再度接続する方法はないと思います。
答え2
ログオフ後も長時間実行するために私がいつも使用してきたコマンドラインプロンプトは「nohup」なので、あなたの場合は
nohup java -jar test.jar &
& は、別のシェルを実行できるようにするために重要です。これは、再起動すると持続しないと思います。
答え3
「常に」とは、マシンの起動時に起動するという意味なので、起動時スクリプトの一部として起動する必要があります。これを行うための汚い方法は、
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
答え4
Linuxでは、コマンドラインの最後に「&」記号を追加することで、任意のタスクをバックグラウンドで実行できます。例:
java -jar test.jar &