「watch」コマンドをリストに出力

「watch」コマンドをリストに出力

毎分ログファイルに追加される行数についていくつかの簡単な計算をしたいと思います。また、毎秒カウントを保存したいです。

私に必要なのは、毎秒更新されるリストで、次のコマンドの出力です。

watch -n1 'wc -l my.log'

「watch」コマンドの「アップデート」を一覧表示する方法は?

答え1

-tスイッチを使用してwatchヘッダーを印刷しないことがあります。しかし、これでも画面が消去されるので、単純なシェルループを使用する方が良いでしょう。

while sleep 1; do
    wc -l my.log
done

1つの利点は、簡単に別のコマンド(たとえばdate)を追加したり、出力をパイプしてsedフォーマットを再指定できることです。ちなみに、ループ内で交換するとエラーで自動的に終了しますsleep 1wc

答え2

これは古い質問ですが、非常に簡単な答えを見つけました。

watch -n1 'wc -l my.log | tee -a statistics.log'

これはwc1秒ごとに実行され、結果をStatistics.logファイルに追加して画面に表示します。
したがって、連続した行を表す数でいっぱいのファイルが生成されますmy.log

答え3

これを行うスクリプトを作成できます。私は私の電話をかけてkeep(続くように)binルートに乗りました。

これは私のスクリプトです。

#!/bin/bash
echo "Repeating command $* every second"
while sleep 1; do
    "$@"
done

答え4

以下を試してください。

watch -n1 'wc -l my.log >> statistics.log'

関連情報