특정 파일이 얼마나 빨리 증가하는지 알고 싶습니다.
저 할 수 있어요
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줄을 먼저 읽을 필요가 없습니다(이진 파일에서는 시간이 걸릴 수 있음).