파일이 얼마나 빨리 커지고 있는지 시각화하는 명령 줄 유틸리티?


19

특정 파일이 얼마나 빨리 커지고 있는지 알고 싶습니다.

내가 할 수있는

watch ls -l file

그리고 변화율로부터이 정보를 추론하십시오.

시간이 지남에 따라 파일의 증가 속도를 직접 출력하는 비슷한 것이 있습니까?

답변:


24

tail -f file | pv > /dev/null

그러나 파일을 acually 읽는 것과 관련이 있으므로 파일 크기 만 감시하는 것보다 약간 더 많은 리소스를 소비 할 수 있습니다.


이것은 다른 사람에게 검색을 저장하거나 두 개만 저장하는 좋은 일을합니다.이를 수행하려면 yum install pvCentos / Redhat 시스템을 사용해야합니다. ;-)
Ralph Bolton

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

고마워요! 누군가 관심이 있다면 몇 가지 작은 수정을했습니다. 파일 크기가 변하지 않아 파일 크기가 변경되지 않을 때 스크립트 중지를 중지하고 간격을 설정하기 위해 선택적 두 번째 매개 변수를 추가했으며 첫 번째 실행에서 항상 0이므로 텍스트를 더 이상 인쇄하지 않습니다. gist.github .com / einsteinx2 / 14a0e865295cf66aa9a9bf1a8e46ee49
Ben Baron
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.