업데이트된 진행률 표시줄

업데이트된 진행률 표시줄

실행하는 동안 신뢰할 수 있는 진행률 표시줄(또는 소요 시간에 대한 신뢰할 수 있는 정보)을 얻을 수 있습니까 updatedb?

답변1

이는 효율적인 솔루션은 아니지만 모든 것을 두 번 반복하는 것만큼 나쁘지는 않습니다.

처리된 파일 수는 updatedb다음과 같습니다.

updatedb -v | wc -l

또는 대략 다음과 같습니다:

find / -mount | wc -l

이 명령은 두 번 반복되므로 숫자를 가져오는 데 사용할 수 없습니다.

그러나 사용된 inode 수를 사용할 수 있으며 이는 거의 동일합니다.

df -i | grep '/$' | awk '{print $3}'

updatedb -v이 값을 사용하면 명령이 실행되는 동안 이동한 거리를 계산할 수 있습니다.

count=$(df -i | grep '/$' | awk '{print $3}')

sudo updatedb -v | while read
do
    printf "%3d\r" $((100 * (++i) / count))
done

printf이는 출력의 모든 행에 대해 호출되기 때문에 매우 비효율적입니다 updatedb -v. printf특정 행만 처리 하면 더 좋을 것입니다.

count=$(df -i | grep '/$' | awk '{print $3}')

sudo updatedb -v | while read
do
    if (( ++i % (count/20) == 0 )); then
        printf "%3d\r" $((100 * i / count))
    fi
done

답변2

아니요, 그러한 옵션은 존재하지 않으며 있어서도 안 됩니다.

측정해야 한다면 먼저 시스템에 파일이 몇 개 있는지 알아야 합니다. 즉, 모든 것을 두 번 반복하면 속도가 느려질 수 있습니다.

분명한 예는 커널 소스 코드를 추출하는 데 를 사용하는 경우 파일 롤러가 먼저 모든 파일을 아카이브해야 하기 때문에 file-roller커널 소스 코드 추출을 직접 사용하는 것보다 속도가 느리다는 것입니다 tar(그렇지 않으면 진행률 표시줄이 잘못 표시될 수 있음). 그런 다음 실제로 시작하기 전에 추출 프로세스가 진행되는 동안 기다립니다.

관련 정보