簡體   English   中英

優雅地使用“start / b”從Windows批處理文件中啟動java(jetty / solr)進程

[英]Gracefully kill a java (jetty/solr) process started from a windows batch file with “start /b”

我正在使用批處理文件啟動Java后台進程(Solr)

start /b java -jar ...

問題是start /b將屏蔽進程與SIGINT信號,請參閱help start 這意味着taskkill /pid ...將無法工作, taskkill /f /pid ...taskkill /f /pid ...進程,而不會讓它首先執行shutdown hooks。

是否有另一種方法可以從.bat文件啟動Windows上的后台進程而無需打開窗口而不屏蔽SIGINT? 或者是否有另一種向java VM發送信號的方法,以便Solr在從start /b運行時正常關閉?

如果可能的話,我想使用普通的批處理腳本而不是VBScript或類似的,因為這是我們大多數用戶可能最了解的。

不確定如何在.bat文件中執行此操作,但使用Powershell可以執行此操作:

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

然后你可以正常停止這個過程。

運行get-help Start-Process -detailed以獲取有關選項的更多信息 - 您還可以輕松地以不同的用戶身份運行該流程,以及舊的start不允許您執行的其他操作。

你測試過了嗎? 我跑了:

START /B notepad.exe

然后用它關閉它

TASKKILL /PID 123456

我找到了針對我的具體案例(solr + jetty)的解決方法,請參閱http://alaminsumon.blogspot.com.br/2009/06/how-to-stop-and-start-jetty-server-from.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM