2

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

问题是 selenium 服务器会在您启动它的任何命令行中保持运行,但是在命令完成之前,厨师不会继续配置机器。问题是,命令永远不会完成,它不应该完成。

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

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

我对任何想法都持开放态度,即使它有点骇人听闻。提前致谢!

4

2 回答 2

1

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

start java -jar seleniumserver.jar

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

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

于 2013-08-17T23:18:38.360 回答
0

不阻止厨师运行的Windows上的异步进程

批处理“运行”执行代码'powershell -c“启动进程notepad.exe”'结束

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

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

net statistics server

现在在命令提示符下使用 powershell 和 start-process 运行它,并验证 c:\output.txt 中显示的正确输出。请注意使用单引号或双引号。我的经验说 start-process 出于某种原因不适用于双引号。

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 中找到正确的输出。

于 2016-03-28T19:37:38.170 回答