Intereting Posts
Где фактически передаются аргументы командной строки (например, «some.text»)? Могу ли я запустить команду после того, как пользователь использует Ctrl-C, чтобы убить команду? Ошибка в скрипте. Командная находка пропускает папки с символом пробела Какая версия CentOS эквивалентна Red Hat 9.x? Ошибка входа в систему Centos Мой cron не работает, ничего не отображается в / var / mail / <имя_пользователя> или в / var / log / syslog встроенные условия для назначения vim редактирует файл с помощью user-vimrc, но все еще загружает все предыдущие инициализации Как запустить Tunefs в корневой файловой системе во FreeBSD? Squid не блокирует не-ascii domans Могу ли я безопасно удалить файл ~ / Trash? Команда GnuPG для отображения ключевой информации из файла Остановить zsh от завершения родительских каталогов Общий сетевой принтер Windows поддерживает использование заднего лотка в качестве источника Как использовать несколько версий унисона в одной системе?

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

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

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

В 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 , …