Javaアプリケーションを実行し、フォアグラウンドを実行しているスクリプトがあります。 私が達成したいのは、Ctrl + cを押したときにJavaアプリケーションを閉じることです。JavaアプリケーションのプロセスツリーをCtrl + CでBashスクリプトから実行する
このようにすると仮定何か:
のbash-FILE-1:
trap "stopit; exit" SIGINT
echo "Going to run java app"
source bash-file-2.sh
bash-file-2.sh:
exec java -jar myapp.jar
- stopit()関数は単に見えに.pidファイルの場合、プロセスが終了します。バックグラウンドでアプリを実行するとうまく動作します。
私はCtrl + cを押してもコンソールモードを終了しますが、アプリケーションはバックグラウンドで動作し続けます。これは、アプリケーションが 'exec'コマンドのために別のシェルで実行されているためです。これは正しいです?
この場合、ctrl + cをトラップしてstopit関数を呼び出すにはどうすればよいですか?私が実行しています
EDIT
のJavaアプリは、実際のjarファイルを呼び出すラッパージャーです。
それはこのようなものになるだろう:
bash1 -> bash2 -> wrapper.jar -> myapp.jar
'exec'は他とあなたのプロセスを置き換えます'stopit'はそのプロセスにはもう存在しませんが、' exec'が本当に必要なわけではありません。あなたは 'java ... 'を持つことができ、入力したようにそのコマンドを実行します。 –
@EricRenouf私は質問を編集した、私はあなたは言った、問題は別の瓶を呼び出す瓶から来ていることに気づいた。それは可能でしょうか? –
呼び出しはどのように起きていますか、私は2番目のjarを意味します – Marged