这个回答 到 < a href = “ https://stackoverflow./questions/601543”> 命令行命令在一定时间后自动终止命令
提出了一种从 bash 命令行超时长时间运行的命令的1行方法:
( /path/to/slow command with options ) & sleep 5 ; kill $!
但是,给定的“长时间运行”命令可能比超时更早完成。
(让我们称之为“典型的-长时间运行但有时很快”命令,或者为了好玩而称之为 Tlrbsf。)
因此,这种漂亮的一行程序方法存在一些问题。
首先,sleep
不是条件的,因此它对序列完成所需的时间设置了一个不理想的下限。当 Tlrbsf命令在2秒钟内完成时,可以考虑睡眠时间为30秒、2米甚至5米,这是非常不可取的。
其次,kill
是无条件的,因此这个序列将尝试终止一个非运行进程,并对它发牢骚。
那么..。
有没有一种 超时的方法,使一个典型的长时间运行但有时很快的(“ tlrbsf”)命令
还有额外加分
使得 Tlrbsf命令的 stdin/stdout/stderr 可以被重定向,就像它被直接运行一样?
如果有,请分享你的代码。如果没有,请解释原因。
我已经花了一段时间尝试破解上面提到的例子,但是我的 bash 技能已经达到了极限。