起動時にコンソール ウィンドウを開いてフォアグラウンドのままにする Java コンソール アプリケーションを開発しました。そのアプリケーションをバックグラウンドで起動したいと考えています。
今、私はこのコマンドラインでアプリケーションを起動します:
java -jar myapp.jar
この動作を実現する方法はありますか? コマンドラインパラメータを変更するだけで十分ですか、それともコードを変更する必要がありますか?
起動時にコンソール ウィンドウを開いてフォアグラウンドのままにする Java コンソール アプリケーションを開発しました。そのアプリケーションをバックグラウンドで起動したいと考えています。
今、私はこのコマンドラインでアプリケーションを起動します:
java -jar myapp.jar
この動作を実現する方法はありますか? コマンドラインパラメータを変更するだけで十分ですか、それともコードを変更する必要がありますか?
答えは、オペレーティング システムによって異なります。
*nix: <your command> &
Windows: (opens a new console): start <your command>
Windows: (doesn't open a new console): start /b <your command>
UNIX ベースでこれを行っている場合は、最後に & を追加して、新しいスレッドを生成し、バックグラウンドで実行し続けることができます。
java -jar myapp.jar &
本当にバックグラウンドで実行したいだけjava -jar myapp.jar &
なら、仕事をします。そうすれば、シェルが閉じても死にますが、シェルを使い続けることができます。
本当にデーモンとして実行したい場合nohup java -jar myapp.jar &
は、仕事をします。そうすれば、シェルが閉じても生き続けます。
これを信頼できるものにしたい場合は、init スクリプトまたはupstart ジョブ定義を準備するか、Vixie 指定子を介して実行してcron(8)
@reboot
、起動時に開始するようにすることができます。
Windowsを使用している場合は、JavaServiceWrapperを検討してください。私は過去にプロジェクトでそれを使用しました。