파일이 얼마나 빨리 증가하는지 시각적으로 표시할 수 있는 명령줄 유틸리티가 있습니까?

파일이 얼마나 빨리 증가하는지 시각적으로 표시할 수 있는 명령줄 유틸리티가 있습니까?

특정 파일이 얼마나 빨리 증가하는지 알고 싶습니다.

저 할 수 있어요

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줄을 먼저 읽을 필요가 없습니다(이진 파일에서는 시간이 걸릴 수 있음).

관련 정보