ファイルがどれだけ早く増加するかを視覚的に表示できるコマンドラインユーティリティはありますか?

ファイルがどれだけ早く増加するかを視覚的に表示できるコマンドラインユーティリティはありますか?

特定のファイルがどれだけ早く増加するかを知りたいです。

私はできます。

watch ls -l file

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

時間の経過とともにファイルの増加率を直接出力できるようなものはありますか?

答え1

tail -f file | pv > /dev/null

ただし、実際にファイルを読み取る作業が含まれているため、ファイルサイズのみを監視するよりも多くのリソースを消費できます。

答え2

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"
}

答え4

tail -f -c 1 file | pv > /dev/null

他の答えの変形は、-c 1ファイルの最後のバイトから始まることを意味します。つまり、最後の10行を最初に読む必要はありません(バイナリファイルでは時間がかかることがあります)。

関連情報