“watch”的滚动版本

“watch”的滚动版本

我们需要跟踪服务器进程每隔几秒重写一次的状态文件。该watch命令对此非常有效(即watch cat file.txt),但现在表格有几页长(即使在旋转的宽屏幕显示器上)。我们有一个专用的显示器/监视器来连续运行此命令,并且我们需要能够上下滚动文件以查找相关的状态值。
我还要指出的是,我们没有运行screen,或者tmux因为我们已将整个监视器专用于该状态文件。

我搜索过这个主题(最好的讨论这里)但没有任何代码可以在我们的系统(Ubuntu 20)上运行。例如:

  • swatch运行并滚动,但几分钟后,文本会随着每次更新而被粉碎并且变得不可读
  • pwatch闪烁得如此严重,无法观看(该watch命令本身具有完美平滑的更新)
  • watch "cat file | tail -n $(($LINES - 2))"具有静态偏移并且不滚动
  • watchall实际上并没有滚动(我认为也有curses错误)

所以现在我再次提出这个问题。有没有人找到watch可以在 Ubuntu 上运行的可滚动版本?谢谢。

答案1

您需要多久滚动一次屏幕,多久需要更新一次视图?如果您预计需要滚动,我想您将花费超过几秒钟的时间来查看文件的任何特定实例。像下面这样的东西可能会起作用:

#!/bin/sh

file="${1}"
while true; do
  timeout 60s less "${file}"
done

答案2

听起来像 klogg 这样的某种日志查看器应用程序对您的用例很有用。https://klogg.filimonov.dev/

答案3

您可以使用viddy

它是一个二进制文件,具有原始 watch 命令的基本功能,包括颜色输出和差异突出显示,但允许滚动,并具有一些更酷的功能,包括文本搜索和时间机器模式,允许返回到以前版本的输出。

目前安装它的单行是

wget -O viddy.tar.gz https://github.com/sachaos/viddy/releases/download/v0.3.6/viddy_0.3.6_Linux_x86_64.tar.gz && tar xvf viddy.tar.gz && sudo mv viddy /usr/local/bin

然后你可以像这样使用它

viddy -d -n 1 cat file.txt

每秒获取文件内容并突出显示更改。当 viddy 运行时,按下?可获取键盘快捷键。

viddycmd选项:

$ viddy -h

Usage:
 viddy [options] command

Options:
  -b, --bell                 ring terminal bell changes between updates
  -d, --differences          highlight changes between updates
  -n, --interval <interval>  seconds to wait between updates (default "2s")
  -p, --precise              attempt run command in precise intervals
  -c, --clockwork            run command in precise intervals forcibly
  -t, --no-title             turn off header
  --shell                    shell (default "sh")
  --shell-options            additional shell options
  --unfold                   unfold command result
  --pty                      run on pty (experimental, not for Windows)

相关内容