「ウォッチ」のページングバージョンはありますか?


24

UNIXシェルの下では、watchコマンドと同様の効果を得ることができますが、ページングを使用すると、複数の画面を占有する場合に出力内をスクロールできますか?

言い換えれば、私はにあるプログラムしたいwatchlessにあるのcat

例として、私はの出力を見てみたかったと言うことができますqstat私は使用することができ、

watch qstat

qstatの出力を監視しますが、これは最初の画面のみを表示できます。

のページングバージョンでwatchは、出力が引き続き更新されるため、出力内を移動できwatchます。現在、既存のユーティリティでこれを行う方法はありますか?


これはおそらくSuperUserまたはServerFaultに属します。

あなたはおそらく正しいです、どうすればそれを動かすことができますか?
デビッドディーン

これまでに3人が投票しました。さらに2人(またはモデレーター)が投票する場合、自動的に行われます。
グレッグヒューギル

大きなウィンドウを開いて、ページングを完全に廃止しないのはなぜですか?
マーチン

1
私の画面はすでにいっぱいだから?なぜ使用lessできるのにcat、より大きなウィンドウを使用するのですか?
デビッドディーン

回答:


18

「監視」コマンドを変更するのではなく、画面を使用してください!

たとえば、高さ300行と幅100文字を表示し、その周りを移動できるようにする必要があるとします。画面を起動した後、次のようにサイズを強制します。

C-a :height -w 300
C-a :width -w 100

次に、監視コマンドを開始します。その後、を使用C-a <ESC>してディスプレイの周囲をページングできます。

残念ながら、コピーモードでは表示は更新されません。しかし、表示しているウィンドウのセクションを調整したい場合、デフォルトでは端末が仮想ウィンドウの右下を表示するので、最も簡単な方法は高さ/幅コマンドを再実行することです。


唯一の問題は、コマンドを継続的に繰り返す方法であり、各ゴーの間に画面をブランクにします
David Dean

おっと、私は画面内で監視コマンドを実行するつもりでした。一定。
MikeyB 09

yartls-スクリーンを愛するもう1つの理由:)
ウォーレン

それC-は別名ですctrl-
ヘンリー

5

これを試すことができます:

一方、vmstat; 寝る1; 完了| もっと少なく

vmstatをqstatに置き換え、必要に応じてスリープを調整します


これはすべて、コマンドをlessに繰り返し続けます。つまり、最新の出力を表示するにはスクロールを続ける必要があります。
デビッドディーン

はい。ただし、スクロールバックできます。両方を同時に持つことはできません。シフトfを押すと、大文字の「F」がテールのように機能します。
Spacenジャセット09

4

マルチテール:http ://www.vanheusden.com/multitail/

例:

 vmstat 1 |multitail -j

「b」とページ/矢印を上下に押して、スクロールバックします。


2

OK、watchless機能を少し試してみました。それは少しラフで、まだ完全に動作するようには見えませんが、ここに行きます:

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

R表示を更新するには、lessでキーを手動で使用する必要があります。

またはに対しては機能しているようですwatchless dateが、どちらも空白になっています。何か案は?watchless qstatwatchless pstree


あなたは、コマンドの次の実行してからの出力書き込むために第2のファイルを使用する必要があるmvことで、ファイルの読み込みにこの第二のファイルをlessとしてmvアトミックです。そうしlessないと、ファイルへの書き込みと同時に更新が要求された場合、ファイルが消失したと考えることができます"$@" > $out。また、ループを開始する前に出力ファイルに1回書き込む必要があります。
オーレリアンオーム

0

行の内容が変更されると、これをどのように実装できるかわかりませんwatch。下にスクロールしても、2秒ごとに最初の行にリセットされます。

回避策は次のとおりです。

watch 'qstat | tail -n40' 下から40行目から始まるqstatの出力を表示する

watch 'qstat | grep jsmith' 出力をgrepして、関心のある行が常に最初の画面に表示されるようにします。

パイプの周りにコマンドを一重引用符で囲む必要があることに注意してください。そうしないと、。の出力でwatchはなく、の出力をパイピングすることになりますqstat


0

enkrsの答えを続けるには、

'qstatを見る| ヘッド-300 | 尾-15 '

qstatの出力に任意のページを取得します。


0

ここに私が投げたいくつかのコマンドで動作するように見えるかなり粗雑なスクリプトがあります

#!/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)。また、入力引数の解析をより適切に行うことができます。



0

このリクエストを満たすために、「watchall」という名前の単純なpythonスクリプトを実装します

入手方法: pip install watchall

時計をwatchallに置き換えて、スクロール可能な画面をお楽しみください。現在は、-nおよび-dフラグのみをサポートしています。


-1

あなたが試すことができます:

watch command > file

次に、ファイルにappendend出力が表示されます(これをテストするためのLinuxボックスはありません)


1
それはあなたが意図したことをするつもりはありません、本当に、何度も何度もfile同じ出力でいっぱいになるでしょう。それは確かに元の質問に対処していません。
グレッグヒューギル

それから私は

1
「>」を「>>」に変更して、データをファイルに追加しますか?
ローリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.