为了账号安全,请及时绑定邮箱和手机立即绑定

在bash中没有不必要的延迟超时命令

在bash中没有不必要的延迟超时命令

幕布斯6054654 2019-06-29 17:13:37
在bash中没有不必要的延迟超时命令这个答案到命令行命令在一定时间后自动终止命令。建议使用1行方法从bash命令行超时长时间运行的命令:( /path/to/slow command with options ) & sleep 5 ; kill $!但是,给定的“长时间运行”命令可能比超时更早完成。(让我们称它为“通常运行时间较长但有时速度较快”的命令,或特尔布夫(为了好玩。)因此,这种巧妙的1-衬砌方法有几个问题。首先,sleep不是有条件的,因此在序列完成所需的时间上设置了一个不受欢迎的下限。假设睡眠时间为30或2米甚至5米,当特尔布夫命令在2秒内完成-非常不受欢迎。第二,kill是无条件的,所以这个序列会试图杀死一个没有运行的进程并抱怨它。所以.。有没有办法超时一个典型的长时间运行-但有时-快速(“tlrbsf”)命令有一个bash实现(另一个问题已经有Perl和C的答案了)将在两人中较早时终止:特尔布夫程序终止或超时不会扼杀不存在/不运行的进程(或者,可选:不会)。抱怨关于一场凶杀案)不一定是一条线可以在Cygwin或linux下运行。..并且,为了获得积分,运行特尔布夫命令和背景中的任何“睡眠”或额外进程,以便使stdin/stdout/stderr特尔布夫命令可以重定向,就像它已经直接运行一样?如果是,请分享您的代码。如果没有,请解释原因。我花了一段时间试图破解上述示例,但我的bash技能达到了极限。
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

你可能在找timeout核心指令。因为它是coreutils的一部分,所以它在技术上是一个C解决方案,但它仍然是coreutils。info timeout更多细节。下面是一个例子:

timeout 5 /path/to/slow/command with options


查看完整回答
反对 回复 2019-06-29
  • 3 回答
  • 0 关注
  • 829 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信