cat trava aleatoriamente em .zshenv

0

Veja o que eu tenho em ~/.zshenv ( /etc/zshenv está em branco)

print -P "before %D{%H:%M:%S}"
/usr/bin/time /bin/cat /dev/null
print -P "after %D{%H:%M:%S}"

Se eu tentar iniciar o zsh , ele será ocasionalmente interrompido no comando cat por até 30 segundos:

bash$ zsh -c exit
before 16:04:08
  0.00s user 0.00s system 0% cpu 0.001 total
after 16:04:29

Se eu abrir outro novo zsh imediatamente depois, o enforcamento nunca acontece. Se eu esperar pelo menos dois minutos primeiro, isso quase sempre acontece.

Por que isso está acontecendo? Como posso pará-lo?

Isso é zsh-4.3.11 no CentOS 6.9.

    
por rampion 24.08.2018 / 22:28

1 resposta

0

A lentidão foi devida a hash . Um dos diretórios padrão que os SAs locais tinham colocado no meu caminho tinha 8k + entradas.

Usando o comando strace sugerido por Stéphane Chazelas revelou que as chamadas stat() usadas por hash estavam causando a lentidão.

Se eu abrisse outra shell imediatamente depois, a chamada de cada stat() seria até 180x mais rápida (presumivelmente devido ao armazenamento em cache), o que explica por que a lentidão não aconteceu todas as vezes.

Como uma correção, eu removi o diretório do meu PATH . Se eu precisar de algum executável de lá, eu só colocarei links simbólicos para eles em um diretório menor no meu PATH .

    
por 28.08.2018 / 15:39

Tags