Por que o ls -al repentinamente leva muito tempo?

0

De repente, ls -al leva um longo tempo irritante, um% normalls é tão rápido quanto o normal.

Qual pode ser o problema?

    
por Nifle 26.01.2016 / 14:43

2 respostas

1

Quando ls é executado, apenas mostra uma lista de arquivos e nada mais. ls -al , por outro lado, mostra muito mais informações e, para isso, precisa stat (1) esses arquivos.

E se algo estiver instável com o arquivo, a operação pode levar muito tempo.

Meu problema era que o grupo de alguns dos arquivos não existia mais

-rw-------   1 nifle   10001    21499 Jan 25 14:31 .bash_history
-rw-r--r--   1 nifle   10001      304 Dec  6  2004 .bash_logout
-rw-r--r--   1 nifle   10001      222 Dec 16 14:05 .bash_profile
-rw-r--r--   1 nifle   10001      124 Dec  6  2004 .bashrc

Um simples chown nifle:nifle .bash* classificou o problema.

    
por 26.01.2016 / 14:44
1

Às vezes, pode ser um alias, processamento adicional por shell ou acesso lento ao dispositivo de armazenamento.

No meu, eu tenho como apelido:

$ type ls
ls is aliased to 'ls $LS_OPTIONS'

se for esse o caso, a execução como \ls -al poderia chamá-lo diretamente.

Para o processamento de shell, você pode verificar isso ativando o rastreamento de shell, por exemplo

$ set -x
$ ls
+ ls -G -h
README.txt index.php
++ update_terminal_cwd
++ local url_path=
++ local i ch hexch LC_CTYPE=C LC_ALL=
++ (( i = 0 ))
++ (( i < 26 ))
++ ch=/
++ [[ / =~ [/._~A-Za-z0-9-] ]]
++ url_path+=/
++ (( ++i ))
++ (( i < 26 ))
++ ch=U
++ [[ U =~ [/._~A-Za-z0-9-] ]]
++ url_path+=U
++ (( ++i ))
++ (( i < 26 ))
++ ch=s
... hundred of other lines
$ set +x
$ echo $PROMPT_COMMAND
update_terminal_cwd

Por fim, verifique seus ls vezes:

$ time ls -la
...
real    0m0.025s
user    0m0.001s
sys     0m0.004s

Se o tempo de sys for muito alto, verifique o comando load avg in top se alguma coisa atrasa sua máquina no momento, alternativamente, faça um benchmark em seu disco rígido, talvez você tenha muitas solicitações de E / S acontecendo (confira: iotop ou vmstat ).

Se isso acontecer com tranquilidade, sempre verifique com o shell diferente ou com a partição tmpfs ( /tmp ), que deve ser muito mais rápida.

    
por 26.01.2016 / 14:55