時々ディレクトリを変更することから始めます(ターミナル経由)子プロセス要件100%CPU時間が5〜6秒かかり、その間コンソールが完全に応答しなくなります。
ディレクトリに移動するたびにこれは発生しませんが、1日に数回発生します。
5~7秒後子プロセスが消えてディレクトリに入りました。
どんなアイデアがありますか?
私のもの~.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
実行したい場合があります。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 "$@"
}