是否有一个 Unix 命令可以记录另一个命令输出的变化?

是否有一个 Unix 命令可以记录另一个命令输出的变化?

我有一个长时间运行的操作,会影响某些状态。该状态通过运行某个命令来显示,例如showst

showst我想查看在长时间运行的操作期间显示的所有可能输出的日志。

对于简短的操作我会使用

watch -n0.1 showst

然后就只能盯着终端看发生了什么。但如果操作运行了一个小时,那就不太实际了。我希望有一个日志可以告诉我在特定时间showst输出变为这样。然后又变为那样。

有没有命令可以帮助我?


编辑以添加一些说明。

下面是我希望看到的具体示例。假设操作运行一个小时。 showst输出A前半个小时,然后B输出 10 分钟,然后再次切换A

我想查看类似这样的日志:

2016-08-19 12:00: A
2016-08-19 12:30: B
2016-08-19 12:40: A

A如果并且B也可以是多行的话那就太好了。

这有点像watch --differences如果你坐着观看的话在终端上能做的事情,但我希望它在日志中。

答案1

我不知道专用的命令,但我会写类似的东西:

(while true; do sleep 0.1; showst; done) | uniq

注意:Linux 上的睡眠实现通常支持这样的浮点参数,但如果您需要一个可移植的解决方案,那么您应该使用一个整数参数,将池限制为一秒滴答,或者根本不睡眠,这将大量使用您的 CPU。

另请参阅手册页睡觉独特

相关内容