Por que ls --color = always 'pode ser lento para um diretório pequeno?

5

Para um determinado diretório DIR no meu sistema, o ls --color=always leva cerca de 8 segundos, embora contenha menos de 10 arquivos e subdiretórios. Sem o argumento da cor, não leva tempo.

Por que ls demoraria tanto com o argumento da cor, e como posso descobrir exatamente o que está demorando? Provavelmente é algum subdiretório no DIR que está montado, mas como posso descobrir qual deles é o causador de problemas?

    
por user9474 29.09.2011 / 20:13

3 respostas

5

Eles apenas desativaram a cor nos servidores no meu trabalho. De acordo com este blog: link

Pode ser que a função stat () seja chamada em todas as diferentes montagens em um diretório específico para obter as informações apresentadas pelas cores ...

É fácil confirmar isso:

time command ls /dir/with/many/toplevel/entries/ >/dev/null
time $SHELL -c "ls --color=always /dir/with/many/toplevel/entries/ >/dev/null"

O primeiro comando, para uma estrutura de diretórios problemática que criei, fornece:

real    0m0.523s
user    0m0.284s
sys     0m0.052s

E o segundo:

real    1m47.799s
user    0m0.360s
sys     0m0.928s

Por favor, tenha em mente que se você repetir o "benchmark" inferior, sua segunda execução terá os dados stat () já em cache. A segunda corrida para a saída colorida me deu:

real    0m0.409s
user    0m0.256s
sys     0m0.120s

Não consegui limpar completamente o cache para garantir que eu pudesse reproduzir o resultado "mais de 90 segundos". O vm.drop_caches sysctl, conforme descrito no link , era insuficiente.

    
por 06.03.2012 / 19:48
1

Tente fazer ls usando * s para listar apenas algumas coisas e ver quais combinações são lentas.

    
por 29.09.2011 / 20:24
0

Algumas configurações de cores são bobas e lidos conteúdos . Verifique sua configuração. Eu uso sls coloridos, mas apenas de tal forma que o lstat forneceria todas as informações necessárias.

    
por 16.04.2014 / 20:21