Команды Cygwin из CMD медленны; от bash быстро - программирование

Команды Cygwin из CMD медленны; от bash быстро

Я использую команды Cygwin из моего приглашения Windows CMD в течение нескольких месяцев без проблем. В течение последних нескольких дней каждый раз, когда я вызываю команду Cygwin (например, ls), команда занимает несколько секунд, чтобы "загрузить" до ее фактического запуска. Если я попробую одну и ту же команду из приглашения bash, она немедленно запускает ( "загружает" ).

В Cygwin FAQ упоминается, что сетевые диски в PATH могут вызвать проблемы, поэтому я пробовал некоторые перестановки моей переменной PATH и сетевого подключения. Ниже "full PATH" означает мою первоначальную настройку пути; "short PATH" означает путь только с каталогом bin Cygwin. Время сообщается с помощью команды time.

Результаты синхронизации для ls

Подключено к сети:

  • Запустите ls внутри bash: 0.124 с
  • Запустите ls внутри CMD (полный PATH): 41.29 s
  • Запустите ls в CMD (короткий PATH): 38.56 с

Отключено от сети:

  • Запустите ls внутри bash: 0.125 с
  • Запустите ls в CMD (полный PATH): 0,17 с
  • Запустите ls в CMD (короткий PATH): 0,19 с

Результаты для cygcheck

Я побежал cygcheck -s и заметил:

Warning: There are multiple cygwin1.dlls on your path

хотя это может быть связано с запуском cygcheck из каталога Cygwin bin. Я полностью удалил и переустановил Cygwin и все еще вижу ту же проблему.

Результаты netstat

Я запускал netstat -a -n перед выполнением Cygwin ls и после выполнения (пока он застопорен). Я делал это несколько раз и обнаружил одну строку от каждого прогона, которая постоянно появлялась во время задержки:

  UDP    127.0.0.1:55030        *:*                    

Номер порта изменился с теста на тест.

strace результаты

Я запустил Cygwin strace в команде ls. Большая часть задержки выполняется в таких вызовах, как:

11685  886560 [main] ls 10020 pwdgrp::fetch_account_from_windows: line: <xxxx>

и

12684  899244 [main] ls 10020 cyg_ldap::fetch_ad_account: No entry for (objectSid=\00\00\00\00) in xxxx DC=xxxx,DC=xxxx,DC=xxxx
4b9b3361

Ответ 1

A в Cygwin FAQ затрагивает медленное время запуска. Недавно Cygwin переключился на использование запросов Active Directory для проверки подлинности, вместо использования плоских файлов. Изменение значений по умолчанию в /etc/nsswitch.conf из

passwd:   files db
group:    files db

к

passwd:   files
group:    files

пропускает поиск AD. Мои команды Cygwin теперь быстрее.