Итак, у меня есть задача Grunt, выполняющая эту команду:

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

Проблема в том, что по какой-то причине процесс java продолжает работать, когда я нажимаю ctrl-c в оболочке.

Моя идея решения этой проблемы заключается в том, чтобы передать pid в переменную сеанса и добавить еще одну команду, чтобы убить тот же pid.

Я понятия не имею, как я могу достичь этого, поэтому мне нужна помощь. Кроме того, если вы можете придумать более простой способ, это будет высоко ценится.

большое спасибо

ОБНОВИТЬ

проблема решилась сама собой, когда я сменил порядок запуска команд, вот так

grunt watch && java -jar

поэтому, когда я нажимаю Ctrl-C, Java-процесс уничтожается.

В любом случае, было бы неплохо, если бы кто-нибудь научил меня, как выполнить мой первый подход.

1 ответ1

1

Когда вы ставите знак & в командной строке, команда помещает предшествующую ему команду в фоновом режиме, поэтому Ctrl-C не останавливает ее. Чтобы убить его, вы можете либо убить $! где $! заменяется оболочкой на последнее заданное в фоновом режиме задание или используйте команду fg, чтобы перенести последнее задание, помещенное в фон, на передний план, к которому затем можно использовать Ctrl-c.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .