簡體   English   中英

使用廚師運行Windows批處理命令會阻止廚師調配

[英]Running a windows batch command using chef blocks the chef provision

我正在Windows上使用Chef,需要運行一個批處理文件來啟動selenium-server java服務(java -jar seleniumserver.jar)作為守護程序。 當我嘗試使用windows_batch資源時,它會導致Chef在配置期間掛起。

問題是硒服務器在您啟動它的任何命令行中都保持運行,但是Chef在命令完成之前不會繼續配置機器。 問題是,命令永遠不會完成,這是不應該的。

到目前為止,這是我嘗試過的方法:

  • 執行java -jar seleniumserver.jar&(使用windows_batch資源)
  • 使用模板為命令創建批處理文件,然后使用windows_batch執行file.bat
  • 使用windows_batch使用&(file.bat&)執行批處理文件

我很樂意接受任何想法,即使它有點古怪。 提前致謝!

如果我對問題的理解正確,則可以啟動一個單獨的過程,以便主批處理文件結束。 例如:

start java -jar seleniumserver.jar

您可以通過不同的start選項控制多個執行參數。

&結尾的命令行與* nix並不相同。

Windows上的異步過程不會阻止Chef運行

批處理“運行”,執行代碼“ powershell -c“開始進程notepad.exe””,結束

以下是使用start-process來啟動帶有參數的命令的示例。

嘗試在命令提示符下單獨運行命令以熟悉其輸出。

net statistics server

現在使用powershell運行它,並在命令提示符下啟動進程,並驗證c:\\ output.txt中顯示的輸出正確。 請注意單引號或雙引號的使用。 根據我的經驗,由於某種原因,啟動過程無法使用雙引號。

powershell -c start-process net -ArgumentList 'statistics workstation' -RedirectStandardOutput c:\output.txt

現在,將以下內容放入Chef執行資源中並運行它。 同樣,請注意單引號,雙引號和轉義的單引號。

execute "run" do
  command 'powershell -c "start-process net -ArgumentList \'statistics workstation\' -RedirectStandardOutput c:\chef-output.txt"'
end

您應該在c:\\ chef-output.txt中找到正確的輸出。

暫無
暫無

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

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