ruby - 继续 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
解决方案
如果第一个execute
命令的结果并不重要,您可以降低超时并使用ignore_failure
common 属性。
也许还有一种方法可以使用 Windows 的START /B <program>
命令而无需等待超时。
推荐阅读
- graphql - Apollo GraphQL:解析器和模型之间的服务层
- python - 列索引
- reactjs - recoil__WEBPACK_IMPORTED_MODULE_0___default(...) 不是函数
- c# - MVC:没有 @Html.EditorFor 就无法创建
- wordpress - 其他简码 Wordpress ACF 中的简码
- r - 没有看到外部 csv 数据的测试
- firebase - Flutter:无法在 iOS 模拟器上运行应用程序
- java - 无效的 AES 密钥长度:java 中的 12 个字节
- php - 这里描述的是什么类型的递归?
- c# - unity,代码中不同平台显示不同logo