ファイルの成長速度を視覚化するコマンドラインユーティリティ?


19

特定のファイルの成長速度を把握したいです。

私はそれをできた

watch ls -l file

そして、変化率からこの情報を推測します。

時間の経過とともにファイルの成長率を直接出力する類似のものはありますか?

回答:


24

tail -f file | pv > /dev/null

ただし、ファイルを実際に読み取る必要があるため、ファイルサイズだけを監視するものよりも少し多くのリソースを消費する可能性があることに注意してください。


これは素晴らしい仕事です-他の誰かに検索を1、2回保存するだけです-これを行うyum install pvにはCentos / Redhatシステムで必要です;-)
ラルフボルトン

9

progress(Coreutils Progress Viewer)または最近のバージョンでpvは、特定のプロセスのファイル記述子を見ることができます。だからあなたができる:

lsof your-file

どのプロセス($pid)がそれに書き込み、どのファイル記述子($fd)で書き込みを行うかを確認し、以下を実行します。

pv -d "$pid:$fd"

または:

progress -mp "$pid"

3

関数としてbash環境に配置した小さなperlスクリプトがあります。

fileSizeChange <file> [seconds]

スリープ秒数のデフォルトは1です。

fileSizeChange() {
  perl -e '
  $file = shift; die "no file [$file]" unless -f $file; 
  $sleep = shift; $sleep = 1 unless $sleep =~ /^[0-9]+$/;
  $format = "%0.2f %0.2f\n";
  while(1){
    $size = ((stat($file))[7]);
    $change = $size - $lastsize;
    printf $format, $size/1024/1024, $change/1024/1024/$sleep;
    sleep $sleep;
    $lastsize = $size;
  }' "$1" "$2"
}

1

次のシェル関数は、ファイルまたはディレクトリを監視し、スループット/書き込み速度の推定値を表示します。で実行しmonitorio <target_file_or_directory>ます。システムにduがない場合(組み込みシステムでioスループットを監視している場合など)、代わりにlsを使用できます(コードのコメントを参照)

monitorio () {
# show write speed for file or directory
    interval="10"
    target="$1"
    size=$(du -ks "$target" | awk '{print $1}')
    firstrun="1"
    echo ""
    while [ 1 ]; do
        prevsize=$size
        size=$(du -ks "$target" | awk '{print $1}')
        #size=$(ls -l "$1"  | awk '{print $5/1024}')
        kb=$((${size} - ${prevsize}))
        kbmin=$((${kb}* (60/${interval}) ))
        kbhour=$((${kbmin}*60))
        # exit if this is not first loop & file size has not changed
        if [ $firstrun -ne 1 ] && [ $kb -eq 0 ]; then break; fi
        echo -e "\e[1A $target changed ${kb}KB ${kbmin}KB/min ${kbhour}KB/hour size: ${size}KB"
        firstrun=0
        sleep $interval
    done
}

使用例:

user@host:~$ dd if=/dev/zero of=/tmp/zero bs=1 count=50000000 &
user@host:~$ monitorio /tmp/zero
/tmp/zero changed 4KB 24KB/min 1440KB/hour size: 4164KB
/tmp/zero changed 9168KB 55008KB/min 3300480KB/hour size: 13332KB
/tmp/zero changed 9276KB 55656KB/min 3339360KB/hour size: 22608KB
/tmp/zero changed 8856KB 53136KB/min 3188160KB/hour size: 31464KB
^C
user@host:~$ killall dd; rm /tmp/zero

本当にありがとうございました!誰かが興味を持っている場合、私はいくつかの小さな変更を加えました。私は、また、オプションの2番目のパラメータは、それは常に0ですので、最初の実行上のテキストを印刷もはや間隔を設定し、ために添加していないファイルのサイズが変更されないスクリプトを停止するオフので、私のファイル転送はむらがあった。 gist.github .COM / einsteinx2 / 14a0e865295cf66aa9a9bf1a8e46ee49
ベン・バロン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.