我正在使用
从批处理文件启动Java后台进程(Solr)start /b java -jar ...
问题是start /b
将屏蔽进程与SIGINT信号,请参阅help start
。这意味着taskkill /pid ...
将无效,taskkill /f /pid ...
将终止该进程,而不会让它首先执行关闭挂钩。
是否有另一种方法可以从.bat文件启动Windows上的后台进程而无需打开窗口而不屏蔽SIGINT?或者是否有另一种向java VM发送信号的方法,以便Solr在从start /b
运行时正常关闭?
如果可能的话,我想使用普通的批处理脚本而不是VBScript或类似脚本,因为这是我们大多数用户可能最了解的。
答案 0 :(得分:1)
不确定如何在.bat文件中执行此操作,但使用Powershell可以执行此操作:
Start-Process java -ArgumentList "-jar start.jar <args>" -WindowStyle Hidden
然后你可以正常停止这个过程。
运行get-help Start-Process -detailed
以获取有关选项的更多信息 - 您还可以轻松地以不同的用户身份运行该流程,以及旧start
不允许您执行的其他操作。
答案 1 :(得分:0)
你测试过吗?我跑了:
START /B notepad.exe
然后使用
关闭它TASKKILL /PID 123456
答案 2 :(得分:0)
我找到了针对我的具体案例(solr + jetty)的解决方法,请参阅http://alaminsumon.blogspot.com.br/2009/06/how-to-stop-and-start-jetty-server-from.html