3

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

4

3 回答 3

1

不知道如何在 .bat 文件中执行此操作,但使用 Powershell 您可以执行以下操作:

Start-Process java -ArgumentList "-jar start.jar <args>" -WindowStyle Hidden

然后您可以正常停止该过程。

运行get-help Start-Process -detailed以获取有关选项的更多信息 - 您还可以轻松地以其他用户身份运行该过程以及旧start版本不允许您执行的其他操作。

于 2012-11-30T17:09:30.463 回答
0

你测试过吗?我跑了:

START /B notepad.exe

然后使用关闭它

TASKKILL /PID 123456
于 2012-11-29T18:40:17.433 回答
0

我为我的特定案例(solr + jetty)找到了解决方法,请参阅http://alaminsumon.blogspot.com.br/2009/06/how-to-stop-and-start-jetty-server-from.html

于 2012-12-01T15:33:18.260 回答