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