Normalmente, quando tenho programas que estão fazendo uma varredura completa do disco e analisando todos os arquivos do sistema, eles demoram muito para serem executados. Por que o updatedb é executado tão rápido em comparação?
relate perguntas
-
Como verificar se um aplicativo está usando renderização de exibição baseada em hardware ou software?
-
Como imprimir apenas 1 nome de arquivo junto com o padrão correspondente?
-
Por que `sync + drop_caches` não está descartando caches?
-
Por que `strace` não mostra que este processo está esperando por algo?
-
Tempo de criação do processo, shell script e overhead de chamada do sistema
A resposta depende da versão
locate
que você está usando, mas há uma boa chance de sermlocate
, cujaupdatedb
execução é rápida evitando fazer verificações completas de disco:(O banco de dados armazena o timestamp de cada diretório,
ctime
oumtime
, o que for mais recente.)Como a maioria das implementações de
updatedb
,mlocate
's também ignorará sistemas de arquivos e caminhos que ele está configurado para ignorar. Por padrão não há nenhum no casomlocate
de , mas as distribuições normalmente fornecem um básicoupdatedb.conf
que ignora sistemas de arquivos em rede, sistemas de arquivos virtuais etc.updatedb
Além de verificar os tempos de modificação,
mlocate
também ignora certas subárvores do sistema de arquivos que possuem muitos arquivos desinteressantes ou potencialmente duplicados, conforme especificado em /etc/updatedb.conf (e descrito em man updatedb.conf ):