Ruby 使bash资源等待命令发出';跑步结束了吗

Ruby 使bash资源等待命令发出';跑步结束了吗,ruby,chef-infra,chef-recipe,Ruby,Chef Infra,Chef Recipe,我正在尝试使用chef自动化安装 bash "install something" do user "root" cwd "/tmp" code <<-EOH ./runinstaller EOH end bash“安装一些东西”要做什么 用户“根” cwd“/tmp” 代码bash资源和所有Chef命令的执行是完全同步的。即使尝试了,也不能在后台运行东西。如果从命令行运行/runinstaller,会发生什么?它会马上回来吗?不会它会做它应该做的。。但即使

我正在尝试使用chef自动化安装

bash "install something" do
  user "root"
  cwd "/tmp"
  code <<-EOH
    ./runinstaller
  EOH
end
bash“安装一些东西”要做什么
用户“根”
cwd“/tmp”

代码bash资源和所有Chef命令的执行是完全同步的。即使尝试了,也不能在后台运行东西。

如果从命令行运行
/runinstaller
,会发生什么?它会马上回来吗?不会它会做它应该做的。。但即使我按下ctrl+c键,它也会返回控件,但它仍然在后台运行。我可以看到文件正在处理中。因此,我猜命令本身被配置为在后台运行。对我来说,它听起来像是
/runinstaller
内置了一些逻辑来检测运行它的进程是另一个进程还是终端/bash。并在此基础上切换其模式(可能与某些标志或参数组合)。您最好的选择是深入了解安装程序的文档:这里的问题很可能不是chef。如果我没有弄错,您可以运行一个命令,该命令本身会生成后台进程,然后主命令将退出状态0,但它生成的进程将继续运行。在后台。不是这样吗?当然,但厨师既不知道也不在乎。Chef本身运行的任何操作都将阻止执行,直到它返回。同样,如果你想成为技术人员,你可以使用ruby_块来启动线程。1) 当我手动安装它时(没有chef),整个过程大约需要5分钟,然后会创建大约30-40个文件夹。2) 使用chef,同样的事情会在3秒内完成,当chef运行完成后,我只能看到1或2个文件夹,但3-4分钟后,所有文件夹都会被创建。如果假设我有另一个使用这些文件夹的方法,我的chef客户端运行将失败。我正在静默模式下运行oracle fusion中间件安装程序(ODI、AIA等)。听起来脚本/可执行文件正做着berkes提到的事情,并将其本身作为背景。您应该检查安装程序是否有命令行选项来禁用此行为。