我们需要跟踪服务器进程每隔几秒重写一次的状态文件。该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 运行时,按下?
可获取键盘快捷键。
viddy
cmd选项:
$ 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)