![用于监控任意流程的进度和预计到达时间的工具](https://linux22.com/image/148380/%E7%94%A8%E4%BA%8E%E7%9B%91%E6%8E%A7%E4%BB%BB%E6%84%8F%E6%B5%81%E7%A8%8B%E7%9A%84%E8%BF%9B%E5%BA%A6%E5%92%8C%E9%A2%84%E8%AE%A1%E5%88%B0%E8%BE%BE%E6%97%B6%E9%97%B4%E7%9A%84%E5%B7%A5%E5%85%B7.png)
我正在寻找一个带有两个参数的工具:
- 要执行的命令,以及
- 目标值
然后,该工具应连续运行该命令,在命令的输出中查找数字,并估计该数字达到目标值所需的时间。
(我已经知道pv
和progress
,但这些分别仅限于通过管道和 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。