Então eu tenho uma tarefa Grunt executando este comando:
java -jar build/lib/plovr.jar serve ./someroot' + configurationFile + ' & grunt watch:sass
O problema é que, por algum motivo, o processo Java continua em execução quando eu pressiono Ctrl-C no shell.
Minha idéia de resolver isso seria canalizar o pid para uma variável de sessão e adicionar outro comando para eliminar o mesmo pid.
Não tenho ideia de como posso conseguir isso, então preciso de ajuda. Além disso, se você puder pensar em uma maneira mais simples, será muito apreciado.
Muito obrigado
ATUALIZAR
o problema se resolveu sozinho quando mudei a ordem dos comandos sendo executados, assim
grunt watch && java -jar
então, quando eu ctrl-c, o processo Java é eliminado.
De qualquer forma, seria bom se alguém pudesse me ensinar como executar minha primeira abordagem.
Responder1
Quando você coloca um sinal & na linha de comando, ele coloca o comando que o precede em segundo plano, e é por isso que Ctrl-C não o interrompe. Para matá-lo você pode matar $! onde $! é substituído pelo shell para a última tarefa enviada em segundo plano ou use o comando fg para trazer a última tarefa colocada em segundo plano para o primeiro plano, para o qual você pode usar Ctrl-c.