优雅地使用“start / b”从Windows批处理文件中启动java(jetty / solr)进程

时间:2012-11-29 18:32:34

标签: windows solr batch-file jetty taskkill

我正在使用

从批处理文件启动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或类似脚本,因为这是我们大多数用户可能最了解的。

3 个答案:

答案 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