不时地更改目录(通过终端)启动git过程需要100%CPU 时间长达 5-6 秒,在此期间我的控制台完全没有响应。
当我导航到该目录时,并非每次都会发生这种情况,但一天中会发生几次。
5-7秒后git进程消失了,我进入目录
有任何想法吗?
我的~.zshrc是这里
➜ Config git:(develop) uname -a
Linux dmitry 4.13.4-200.fc26.x86_64 #1 SMP Thu Sep 28 20:46:39 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
➜ Config git:(develop) zsh --version
zsh 5.3.1 (x86_64-redhat-linux-gnu)
➜ Config git:(develop)
➜ Config git:(develop) bash --version
GNU bash, version 4.4.12(1)-release (x86_64-redhat-linux-gnu)
答案1
您可能必须自己调试它,因为您的 ~/.zshrc 非常具体并且使用许多第三方扩展。
一些可以帮助您的调试工具:
PS4='+[%D{%T.%.}] %N:%i> ' zsh -x
并尝试重现该问题。
这将在一定时间内记录 zsh 运行的所有命令,以便您可以识别哪个命令花费大量时间以及调用它的命令。
您可能希望在
script
(另请参阅其-t
选项)或 with下运行它2> file.log
,因为输出可能非常丰富。strace -tte execve -s 999 -o strace.log zsh
这会再次跟踪所有命令的执行并计时。
git
您还可以仅使用以下内容来检测调用:
git() {
local PS4='[%D{%T.%.}] %N:%i:'
print -u2 -f '-> %s (%s)\n' ${funcstack:^funcfiletrace}
set -o localoptions -o xtrace
command git "$@"
}