Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 如何在bash:ohai block|u device | jq-r key[1]|(printf/dev/&;cat)中的流水线命令之间插入延迟_Unix_Chef Infra - Fatal编程技术网

Unix 如何在bash:ohai block|u device | jq-r key[1]|(printf/dev/&;cat)中的流水线命令之间插入延迟

Unix 如何在bash:ohai block|u device | jq-r key[1]|(printf/dev/&;cat)中的流水线命令之间插入延迟,unix,chef-infra,Unix,Chef Infra,这里ohai是一个chef cli,在执行期间,我得到的输出值仅为/dev/,但这里的预期值为/dev/xvdh 如何重构此命令以获得快速响应 如何在bash:ohai block|u device | jq-r keys[1]|(printf/dev/&&cat)>/tmp/output.txt中的管道命令之间插入延迟好的,因此在Chef内部不需要执行任何操作,只需使用节点属性中现有的ohai数据: node['block_device'].keys.each do |dev_name|

这里ohai是一个chef cli,在执行期间,我得到的输出值仅为/dev/,但这里的预期值为/dev/xvdh

如何重构此命令以获得快速响应


如何在bash:ohai block|u device | jq-r keys[1]|(printf/dev/&&cat)>/tmp/output.txt

中的管道命令之间插入延迟好的,因此在Chef内部不需要执行任何操作,只需使用节点属性中现有的ohai数据:

node['block_device'].keys.each do |dev_name|
  dev_path = "/dev/#{dev_name}"
  # execute resources here
end

为什么不在Ruby代码中这样做呢?我尝试使用shellout Ruby块,但无法将命令分配给节点属性。ruby_block'block_device'do block do Chef::Resource::RubyBlock.send(:include,Chef::Mixin::ShellOut)command='ohai block_device | jq-r keys[1]|(printf/dev/&cat)'command_out=shell_out(command)节点。运行状态['new_device']=command_out.stdout end action:create endOhai数据已作为节点属性加载到Chef中,您不需要再次运行它。我想单独获取EBS设备名称,然后再装载它。由于AWS EC2设备名称因某些实例类型而更改,因此我必须获取ohai块设备,并使用jquery键获取最后一个卷[1]然后尝试获取值/dev/xvdh..但不知何故,当我运行execute资源时,我在输出中只获得了/dev。这只在第一次配置服务器时发生,如果我第二次启动它,它会像一个符咒一样工作..我考虑两个选项..我必须重写命令以获得更快的响应,或者我想睡觉如果{::File.exist?('/tmp/ohai.out')结束。运行操作(:run)执行“device”创建“do command
echo”/dev/$(cat/tmp/ohai\u id.out{jq-r keys[1])结束。如果{::File.exist存在,运行操作(:run)执行“device”创建“do command
echo”/dev/$(cat/tmp/ohai\u id.out{jq-r keys[1])”>/tmp/device out
不执行?('/tmp/block_device.out')end.run_action(:run)if File.exist?('/tmp/device.out')device_name=::File.read('/tmp/device.out')。chomp执行'create_mkfs'do命令“mkfs.ext4{device_name}”不是如果“grep{device_name}/proc/mounts”end endwow太好了,我能得到密钥吗[1]这里可能只有两个卷,第一个卷是root。我最不担心的是。第二个卷是EBS卷,它位于块设备
dev_name=node['block_device']内的键[1]中。键。第一个
,但请记住,我们没有承诺其中的特定顺序,所以您不应该这样做。