2016-03-29 29 views
1

我有以下代碼(註釋,我試圖以及交替代碼)廚師配方窗口命令塊廚師運行

#execute 
# execute 'service-api install' do 
# #command "web-#{node['default']['env']}.cmd" #start /HIGH /b -RedirectStandardOutput chef-serviceoutput.txt 
# command ('powershell -c "start-process web-%s.cmd -RedirectStandardOutput C:\\buildinfo\\service-api\\api\\approot\\chef-serviceoutput.txt"' % node['default']['env']) 
# cwd "C:\\buildinfo\\service-api\\api\\approot" 
# #not_if :timeout => 10, :cwd => 'C:\\buildinfo\\service-api\\api\\approot' 
# end 

powershell_script 'service-api install' do 
    code <<-EOH 
    start-process web-#{node['default']['env']}.cmd -RedirectStandardOutput chef-serviceoutput.txt 
    EOH 
    cwd "C:\\buildinfo\\service-api\\api\\approot" 
end 

代碼實質上改變工作目錄並運行該啓動.cmd文件一臺服務器。現在啓動進程,它應該打開一個新的cmd,然後在那裏運行服務器,但在原來的cmd中它退出到一個新行。

當我通過廚師運行它時,它(我認爲)正在跟蹤進程中的所有子cmd,並在運行此部分後等待服務器被終止後卡住。

有沒有辦法在廚師/窗戶解決它?

回答

1

你可能應該安裝一個實際的服務,而不是嘗試從廚師內部分流後臺作業。檢查出windows_service resource

+0

沒有一個選項,謝謝 – Scooby

+0

然後,你需要別的東西來創建一個單獨的執行上下文。在PowerShell中可能有這樣的一些東西,但常見的模式是使用預定任務集在0秒內執行。 – coderanger