[英]Start java in windows batch and kill it when timeout, need output java console to a file
[英]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.