用于监控任意流程的进度和预计到达时间的工具

用于监控任意流程的进度和预计到达时间的工具

我正在寻找一个带有两个参数的工具:

  • 要执行的命令,以及
  • 目标值

然后,该工具应连续运行该命令,在命令的输出中查找数字,并估计该数字达到目标值所需的时间。

(我已经知道pvprogress,但这些分别仅限于通过管道和 coreutil 工具传输的数据。我正在寻找更通用的东西。)

例子:假设我想跟踪scp文件传输。然后我会检查发送端的大小,并du -b在接收端持续运行。它看起来像这样:

$ du -bs source_directory
5798324564
$ *sometool* 5798324564 "ssh someserver du -bs destination_directory"
2019-01-28 21:03:10 - 23.2% - ETA 22:15:10 (1h 12m)
2019-01-28 21:03:40 - 26.3% - ETA 22:14:57 (1h 11m)
2019-01-28 21:04:10 - 29.3% - ETA 22:14:49 (1h 10m)
...
<continous output until 100% is reached>
...
2019-01-28 22:15:05 - 100% - done.
$

从某种意义上说,它类似于watch重复执行给定的命令,但区别在于,而不是印刷命令的输出,它应该寻找进度值在输出中,并计算 ETA。

答案1

有一个工具可以做到这一点。它被称为eta.

这是一个例子:

eta 示例用法

以下是一些资源:

相关内容