
執行時是否可以獲得可靠的進度條(或只是需要多長時間的可靠資訊)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
,因為 file-roller 需要先將所有檔案歸檔(否則進度條可能顯示不正確),然後您等待在提取過程實際開始之前。