Ich habe also eine Grunt-Aufgabe, die diesen Befehl ausführt:
java -jar build/lib/plovr.jar serve ./someroot' + configurationFile + ' & grunt watch:sass
Das Problem besteht darin, dass der Java-Prozess aus irgendeinem Grund weiterläuft, wenn ich mit Strg+C zur Shell wechsele.
Meine Idee zur Lösung dieses Problems wäre, die PID an eine Sitzungsvariable weiterzuleiten und einen weiteren Befehl hinzuzufügen, um dieselbe PID zu beenden.
Ich habe keine Ahnung, wie ich das erreichen kann, also brauche ich Hilfe. Wenn Ihnen außerdem ein einfacherer Weg einfällt, wäre ich Ihnen sehr dankbar.
Vielen Dank
AKTUALISIEREN
das Problem löste sich von selbst, als ich die Reihenfolge der ausgeführten Befehle änderte, etwa so
grunt watch && java -jar
Wenn ich also Strg-C drücke, wird der Java-Prozess beendet.
In jedem Fall wäre es schön, wenn mir jemand zeigen könnte, wie ich meinen ersten Anlauf durchführe.
Antwort1
Wenn Sie ein &-Zeichen in die Befehlszeile einfügen, wird der vorhergehende Befehl in den Hintergrund gestellt, weshalb Strg-C ihn nicht stoppt. Um ihn zu beenden, können Sie entweder kill $! ausführen, wobei $! von der Shell durch die letzte im Hintergrund ausgeführte Aufgabe ersetzt wird, oder den Befehl fg verwenden, um die letzte im Hintergrund ausgeführte Aufgabe in den Vordergrund zu holen, wo Sie dann Strg-C verwenden können.