Ctrl + C で終了するように pid をパイプする

Ctrl + C で終了するように pid をパイプする

そこで、Grunt タスクで次のコマンドを実行します:

java -jar build/lib/plovr.jar serve ./someroot' + configurationFile + ' & grunt watch:sass

問題は、何らかの理由で、Ctrl + C でシェルに移動しても Java プロセスが実行され続けることです。

これを解決する私のアイデアは、PID をセッション変数にパイプし、同じ PID を強制終了する別のコマンドを追加することです。

どうすればこれを実現できるのか全く分からないので、助けが必要です。また、もっと簡単な方法を思いついたら、とても助かります。

どうもありがとうございます。

アップデート

実行するコマンドの順序を次のように変更すると、問題は自動的に解決しました。

grunt watch && java -jar

そのため、Ctrl + C を押すと Java プロセスが強制終了されます。

いずれにせよ、最初のアプローチを実行する方法を誰かが教えてくれると嬉しいです。

答え1

コマンドラインに & 記号を付けると、その前のコマンドがバックグラウンドに置かれるため、Ctrl-C では停止しません。これを強制終了するには、kill $! を実行します。ここで、$! はシェルによって最後にバックグラウンドで送信されたタスクに置き換えられます。または、fg コマンドを使用して、最後にバックグラウンドに配置されたタスクをフォアグラウンドにし、Ctrl-c を使用できるようにします。

関連情報