고양이가 .zshenv에서 무작위로 멈춤

고양이가 .zshenv에서 무작위로 멈춤

이것은 내 콘텐츠입니다 ~/.zshenv( /etc/zshenv공백)

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

을 시작하려고 하면 zsh때때로 cat최대 30초 동안 명령 실행이 중단됩니다.

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

그런 다음 즉시 다른 새 zsh를 열면 정지가 발생하지 않습니다. 처음에 최소 2분 정도 기다리면 이런 일이 거의 항상 발생합니다.

왜 이런 일이 발생합니까? 어떻게 막을 수 있나요?

zsh-4.3.11CentOS 6.9에 있습니다 .

답변1

속도가 느려지는 이유는 hash로컬 SA가 내 경로에 배치하는 기본 디렉터리 중 하나에 8,000개가 넘는 항목이 포함되어 있기 때문입니다.

사용straceStéphane Chazelas가 제안한 명령stat()사용된 통화 로 hash인해 속도가 느려지는 것으로 밝혀졌습니다 .

그 직후에 다른 셸을 열면 각 stat()호출이 180배 더 빨라집니다(아마도 캐싱으로 인해). 이는 각 호출에 속도 저하가 없는 이유를 설명합니다.

수정 사항으로 내 PATH.PATH

관련 정보