Как диагностировать медленное заполнение вкладки?

Существует определенный пользователь, который, когда они нажимают клавишу вкладки, чтобы завершить путь к файлу, занимает несколько секунд, чтобы машина выполнила завершение. Они используют оболочку bash.

Как я могу диагностировать, что именно вызывает завершение вкладок для этого пользователя?

  • Есть ли способ заставить COMPREPLY выводиться как вертикальный список слов вместо одной строки?
  • Как удалить имя файла из завершения bash на основе его суффикса?
  • Прогнозирование командной строки
  • Пользовательский автозаполнение: обрабатывать пробелы в именах файлов
  • Как уменьшить влияние изменения значения массива `fpath` на время запуска zsh?
  • Завершить остановку вкладки Bash
  • Как я могу автозаполнять каждый параметр по-другому?
  • Выход из программы завершения tcsh по программе
  • One Solution collect form web for “Как диагностировать медленное заполнение вкладки?”

    В bash запустите echo $$ чтобы увидеть идентификатор процесса оболочки, затем приготовьтесь нажать Tab в bash. Откройте другой терминал и запустите strace -p1234 где 1234 – это идентификатор процесса bash. strace будет печатать следы системных вызовов, которые выполняет bash. Даже если вы не понимаете точно, что происходит, этого достаточно часто, чтобы понять, что занимает время – обычно это делает сетевой запрос, или он обращается к очень большому количеству файлов. Выяснение того, какие настройки для изменения, чтобы избежать медленности, может быть или не быть легким.

    В зависимости от настроек безопасности вашей системы вам не разрешается запускать strace в несвязанный процесс. Если вы этого не сделаете, запустите strace в качестве родителя bash:

     strace -tt -T -o bash.trace bash 

    Сделайте попытку завершения, затем выйдите из bash и посмотрите файл трассировки bash.trace . Каждая строка имеет отметку времени в начале, указывающую, когда начался системный вызов, а число в угловых скобках в конце строки – это время, затраченное на системный вызов.

    strace – это команда Linux. Если вы не используете Linux, найдите соответствующую команду в своей системе – dtrace , dtrace , trace , …

    Linux и Unix - лучшая ОС в мире.