首页 > 解决方案 > 继续 Mixlib::ShellOut::CommandTimeout

问题描述

我如何从 Mixlib::ShellOut::CommandTimeout 中捕获/救援?

基本上我正在运行一个打开一个进程并且永远不会返回的命令,我只想关闭打开的进程并继续我的厨师食谱,因为它不返回并不重要......


这是我尝试的代码:

begin
    execute 'install_visual_studio_settings' do
        command "\"#{node.run_state['installed_path']}\\devenv.exe\" /ResetSettings #{node.run_state['tmp_dir']}\\XXXX.vssettings"
        timeout 80
    end
rescue Mixlib::ShellOut::CommandTimeout
    execute 'kill visual studio' do
        command "taskkill /IM \"devenv.exe\" /F"
    end
end

标签: rubychef-infra

解决方案


如果第一个execute命令的结果并不重要,您可以降低超时并使用ignore_failurecommon 属性。

也许还有一种方法可以使用 Windows 的START /B <program>命令而无需等待超时。


推荐阅读