Tuez avec grâce un processus java (jetty / solr) lancé à partir d’un fichier batch Windows avec “start / b”

Je commence un processus d’arrière-plan Java (Solr) à partir d’un fichier de commandes avec

start /b java -jar ... 

Le problème est que start /b protégera le processus des signaux SIGINT, voir help start . Cela signifie que taskkill /pid ... ne fonctionnera pas et que taskkill /f /pid ... tuera le processus sans le laisser exécuter d’abord les hooks d’arrêt.

Existe-t-il un autre moyen de démarrer le processus d’arrière-plan sous Windows à partir d’un fichier .bat sans ouvrir une fenêtre et sans la protéger de SIGINT? Ou existe-t-il un autre moyen d’envoyer un signal à la machine virtuelle Java afin que Solr s’arrête normalement lors de l’exécution à partir de start /b ?

Je voudrais utiliser un script batch normal plutôt que VBScript ou similaire si possible car c’est ce que la plupart de nos utilisateurs connaissent probablement le mieux.

Vous ne savez pas comment le faire dans un fichier .bat, mais avec Powershell, vous pouvez le faire:

 Start-Process java -ArgumentList "-jar start.jar " -WindowStyle Hidden 

Ensuite, vous pouvez arrêter le processus normalement.

Exécutez get-help Start-Process -detailed pour plus d’informations sur les options – vous pouvez également exécuter facilement le processus en tant qu’utilisateur différent et d’autres choses que l’ancien start ne vous laissera pas faire.

Avez-vous testé cela? Iran:

 START /B notepad.exe 

et ensuite fermé en utilisant

 TASKKILL /PID 123456 

J’ai trouvé une solution de contournement pour mon cas spécifique (solr + jetty), voir http://alaminsumon.blogspot.com.br/2009/06/how-to-stop-and-start-jetty-server-from.html