管道 pid 在 ctrl-c 上殺死

管道 pid 在 ctrl-c 上殺死

所以我有一個運行此命令的 Grunt 任務:

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

問題是,由於某種原因,當我按 ctrl-c 到 shell 時,java 進程繼續運行。

我解決這個問題的想法是透過將 pid 透過管道傳輸到會話變量,並添加另一個命令來終止同一個 pid。

我不知道如何才能實現這一目標,所以我需要幫助。另外,如果您能想到更簡單的方法,我們將不勝感激。

非常感謝

更新

當我切換正在運行的命令的順序時,問題自行解決,如下所示

grunt watch && java -jar

所以當我 ctrl-c 時,java進程被殺死。

不管怎樣,如果有人能教我如何執行我的第一種方法,那就太好了。

答案1

當您在命令列上放置 & 符號時,會將其前面的命令置於後台,這就是 Ctrl-C 不會停止它的原因。要殺死它,你可以執行kill $!哪裡 $!由 shell 替換為最後一個背景提交的任務,或使用 fg 命令將最後一個放入後台的任務帶到前台,然後您可以使用 Ctrl-c。

相關內容