有“watch”的分页版吗?

在UNIX shell下,如何获得与watch命令类似的效果,但如果分页占用多个屏幕,则可以在输出中滚动。

换句话说,我想要一个能够watch less什么的程序。

作为一个例子,可以说我想看看qstat的输出,我可以使用

 watch qstat 

观看qstat的输出,但是这只能显示第一个screenful。

随着watch的分页版本,我将能够在输出中移动,因为它仍然通过watch不断更新。 现在有什么办法可以用现有的工具来做到这一点?

而不是修改'看'命令,使用屏幕!

例如,假设您需要能够看到300行高度和100个宽度字符并移动。 启动屏幕后,强制如下大小:

 <CA>:height -w 300 <CA>:width -w 100 

现在开始你的手表命令。 然后,您可以使用<CA>ESC在显示屏上翻页。

不幸的是,在复印模式下显示不刷新。 但是,如果要调整正在查看的窗口的哪一部分,最简单的方法可能是重新运行高度/宽度命令,默认情况下terminal将显示虚拟窗口的右下angular。

你可以试试这个:

而vmstat; 做睡1; 完成| 减

用qstatreplacevmstat并根据需要调整睡眠

Multitail: http ://www.vanheusden.com/multitail/

例:

  vmstat 1 |multitail -j 

按“b”和页面/箭头向上/向下滚动。

好的,我已经有一个小小的function了。 这有点粗糙,它似乎还没有完全工作,但是这里有:

 #!/bin/bash -u out=$(mktemp) (while [ 1 ]; do "$@" > $out; sleep 2; done) & less $out kill $! 

您必须手动使用较less的R键才能更新显示。

它似乎适用于watchless date但不适用于不watchless qstat或不watchless pstree ,它们都显示为空白。 有任何想法吗?

我不明白这是如何实现的,因为行内容发生了变化,即使您可以向下滚动, watch也会每2秒重置一行。

一些解决方法是:

watch 'qstat | tail -n40' watch 'qstat | tail -n40'从底部的第40行开始显示qstat的输出

watch 'qstat | grep jsmith' watch 'qstat | grep jsmith'来grep输出,所以你感兴趣的行总是在第一个屏幕上。

请注意,您需要将命令放在pipe道的单引号中,否则您将输出watch的输出,而不是qstat的输出。

继续恩克斯的回答,

看'qstat | 头-300 | 尾巴-15'

会让你任意页面到qstat的输出。

这是一个相当粗糙的脚本,似乎适用于我投掷了几个命令

 #!/bin/bash # ---- mywatch.sh ---- if [ $# -lt 1 && $# -gt 2 ]; then echo "Usage: $0 <command> <delay>" exit 1 fi CMD=$1 if [ $# -eq 2 ]; then DELAY=$2 else DELAY=2 # default fi while : ; do ( (echo -e "Every ${DELAY}s: $CMD\n"; $CMD) | less )& PID=$! sleep $DELAY kill -9 $PID &> /dev/null clear done 

如此使用:

 alias mywatch="~/bin/mywatch.sh" mywatch vmstat mywatch "ps aux" # commands in options need to be quoted mywaych pstree 10 # change delays 

相当迂腐,刷新之间的过渡并不像我希望的那样顺利。 当然,作为一个简单的脚本,它不支持diff的高亮显示(watch -d)。 而且,input参数的parsing可以做得更好。

那怎么样:tail -f

我实现了一个简单的python脚本来满足这个请求,名为“watchall”

得到它: pip安装watchall

用watchallreplace手表,并享受可滚动屏幕。 现在它只支持-n和-d标志。

你可以试试:

 watch command > file 

然后在你的文件中,你应该看到appendend输出(我现在没有一个linux的盒子来testing这个)