因此我有一个 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。