使 bash 中的命令超时,避免不必要的延迟

2023-11-22

这个答案 to 命令行命令在一定时间后自动终止命令

提出了一种 1 行方法来使 bash 命令行中长时间运行的命令超时:

( /path/to/slow command with options ) & sleep 5 ; kill $!

但给定的“长时间运行”命令可能会在超时之前完成。
(我们称其为“通常长时间运行但有时很快”的命令,或者tlrbsf为了娱乐。)

所以这个漂亮的单行方法有几个问题。
首先,sleep不是有条件的,因此这对序列完成所需的时间设置了一个不希望的下限。考虑 30 秒或 2m 甚至 5m 的睡眠时间,当tlrbsf命令在 2 秒内完成——这是非常不受欢迎的。
其次,kill是无条件的,因此该序列将尝试终止未运行的进程并抱怨它。

So...

有没有办法使通常长时间运行但有时很快的程序超时("tlrbsf")命令

  • 有一个 bash 实现(另一个问题已经有 Perl 和 C 答案)
  • 将在两者中较早的一个终止:tlrbsf程序终止或超时
  • 不会杀死不存在/未运行的进程(或者,可选:不会complain关于一次糟糕的杀戮)
  • 不一定是 1-liner
  • 可以在Cygwin或Linux下运行

...并且,为了奖励积分

  • 运行tlrbsf前台命令
  • 后台任何“睡眠”或额外进程

这样的 stdin/stdout/stderrtlrbsf命令可以重定向,就像直接运行一样吗?

如果是这样,请分享您的代码。如果不是,请解释原因。

我花了一段时间尝试破解上述示例,但我已经达到了 bash 技能的极限。


您可能正在寻找timeoutcoreutils 中的命令。由于它是 coreutils 的一部分,因此从技术上来说它是一个 C 解决方案,但它仍然是 coreutils。info timeout更多细节。 这是一个例子:

timeout 5 /path/to/slow/command with options
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使 bash 中的命令超时,避免不必要的延迟 的相关文章

随机推荐

  • 仅使用 XAML 在左键单击时显示上下文菜单

    WPF 的默认行为ContextMenu是当用户右键单击时显示它 我想要ContextMenu当用户单击鼠标左键时显示 看起来这应该是一个简单的属性ContextMenu 但事实并非如此 我操纵了它 这样我就可以处理LeftMouseBut
  • 为什么匿名函数表达式和命名函数表达式的初始化如此不同?

    我正在看第13条或 ECMAScript 规范 v 5 匿名函数表达式的初始化如下 返回按照 13 2 中的规定创建新 Function 对象的结果 其参数由 FormalParameterListopt 指定 主体由 FunctionBo
  • 作曲家自动加载

    我目前正在尝试将 PSR 0 自动加载与 Composer 结合使用 但出现以下错误 Fatal error Class Twitter Twitter not found 我的目录结构如下 Project src Twitter Twit
  • 如何将多处理与请求模块一起使用?

    我是 python 的新开发者 我的代码是下面的代码 import warnings import requests import multiprocessing from colorama import init init autores
  • 为什么我需要在 g++ 中使用 typedef typename 而不是 VS?

    自从 GCC 发现我有这个问题以来已经有一段时间了 但它今天才发生 但我一直不明白为什么 GCC 需要在模板中使用 typedef typename 而 VS 和我猜 ICC 不需要 typedef typename 是一个 bug 还是一
  • 如何将图像作为资源包含在 C++ 可执行文件中?

    是否可以将图像 jpegs 作为资源包含在 win32 c 可执行文件中 如果是这样怎么办 如果仅是 Windows 则使用自定义资源 如果您想要跨平台的东西 那么请执行我为最近的项目所做的操作 创建一个将 JPEG 编码为char buf
  • Capybara 与 jquery.selectize 的集成测试

    如何使用表单编写水豚集成测试jquery selectize 我想测试用户输入几个值 这里的大多数答案都从底层改变了内容 并且与用户交互不同 这是一个接近用户所做操作的版本 waits for the text to show up in
  • Google App Engine 应用程序实例回收和响应时间

    我在 GAE for Java 小组上发布了这篇文章 但我希望在这里更快地得到一些答案 我决定对我的应用程序进行一些长期运行的性能测试 我 每 5 30 分钟创建一些小型客户端点击应用程序 我运行 3 5 与此类客户端的线程数 我注意到响应
  • NodeJS - 设置mean.io找不到模块错误

    我对整个 node js 事物有点陌生 当尝试安装 MEAN 包时http mean io 我忠实地遵循了以下步骤 我 cd 到我的目录 运行 npm install 然后运行 grunt 命令 并收到此错误 Error Cannot fi
  • 如何解码 HTML 实体

    我有带有 HTML 实体的字符串变量 var str Some text x26 text 我想将其转换 解码 为原始字符 Some text text JavaScript 没有内置函数来实现想要的结果 我无法使用 jQuery 或 DO
  • 简单的浮点数会失去精度

    我正在使用 Delphi XE2 Update 3 即使是最简单的浮点数也存在精度问题 例如3 7 给定以下代码 32 位控制台应用程序 program Project1 APPTYPE CONSOLE R res uses System
  • Angular2 - 在 Azure 中托管时页面刷新 404ing

    我正在开发 Angular2 应用程序 它使用 Angular common 2 0 0 rc 4 和 Angular router 3 0 0 beta 2 我的问题是 当我在某些页面上使用浏览器刷新时 我看到一条错误消息 您正在查找的资
  • 使用 -MM 在 Makefile 中生成依赖项时出现问题

    我是 Makefiles 和 g 的新手 在使用 MM 标志生成项目文件的依赖项时遇到了问题 我发布了我正在使用的 Makefile 供您考虑 请看一下 OUTPUT ROOT output SOURCE ROOT source TITLE
  • SQL:为什么在此 where 子句中过滤掉 NULL 值?

    在我的表中 我有一个可为空的位列 旧系统 另一位开发人员最近对存储过程进行了更改 以仅显示位列不为 true 的值 1 因为这是一个可为空的列 我们注意到如果该列为 NULL 则不会选取记录 为什么是这样 其他开发人员和我都同意 NULL
  • 如何在 PHP 中将变量作为 $_POST 键传递?

    在 PHP 中如何将变量作为 POST 数组键值传递 还是不可能 test test echo POST test Thanks 如果我没理解错的话 你想通过 post 将一个变量从一个 php 文件传递 到另一个 php 文件 这肯定可以
  • 如何在 mat-list-option (mat-selection-list) 项中添加辅助操作

    如何在 mat list option 元素内的 mat selection list 中添加辅助操作 mat icon button 目前 所有项目都添加到 mat list text div 内 例子 https stackblitz
  • 使用 MSI 从本地 Service Fabric 群集访问 Key Vault

    我想通过托管服务身份 MSI 从 Service Fabric 应用程序访问 Key Vault 我已在 Azure 门户中的虚拟机规模集上启用 MSI 并授予其对我的 Key Vault 资源的访问权限 这就像云端的魅力一样 但是 我的本
  • 无法在 Windows 10 中安装 sdkmanager

    我正在尝试单独安装 sdk 管理器以便与 Eclipse 一起使用 我下载了谷歌提供的zip文件 命令行工具 win 6200805 latest zip from https developer android com studio 但当
  • 使用scrapyd有什么优势?

    scrapy 文档说 Scrapy 附带一个名为 Scrapyd 的内置服务 它允许您部署 也称为上传 您的项目并使用 JSON Web 服务控制其蜘蛛 使用 scrapyd 在一致性方面有一些优势吗 Scrapyd 允许您通过方便的 We
  • 使 bash 中的命令超时,避免不必要的延迟

    这个答案 to 命令行命令在一定时间后自动终止命令 提出了一种 1 行方法来使 bash 命令行中长时间运行的命令超时 path to slow command with options sleep 5 kill 但给定的 长时间运行 命令