使用厨师运行Windows批处理命令阻止了厨师提供

时间:2013-08-17 23:10:30

标签: windows batch-file daemon chef

我正在使用厨师用于Windows,需要运行批处理文件,启动selenium-server java服务(java -jar seleniumserver.jar)作为守护进程。当我尝试使用windows_batch资源时,它会导致厨师在配置期间挂起。

问题是selenium服务器在你启动它的任何命令行中都会继续运行,但是在命令完成之前,chef不会继续配置机器。事情是,命令永远不会完成,它不应该。

这是我到目前为止所尝试的内容:

  • 执行java -jar seleniumserver.jar& (使用windows_batch资源)
  • 使用模板为命令创建批处理文件,然后使用windows_batch执行file.bat
  • 使用windows_batch执行带有&的批处理文件(file.bat&)

我对任何想法持开放态度,即使它有点像hacky。提前致谢!

2 个答案:

答案 0 :(得分:1)

如果我正确理解了问题,您可以启动一个单独的进程,以便主批处理文件结束。例如:

start java -jar seleniumserver.jar

您可以通过不同的start选项控制多个执行参数。

使用&的结尾命令行与* nix不同。

答案 1 :(得分:0)

窗口上的异步处理不会阻止主厨运行

批量“运行”做   代码'powershell -c“启动进程notepad.exe”' 端

以下是使用start-process启动带参数的命令的示例。

尝试在命令提示符中单独运行命令,以熟悉其输出。

net statistics server

现在在命令提示符下使用powershell和start-process运行它,并验证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中找到正确的输出。