Я использую команды Cygwin из командной строки Windows CMD в течение нескольких месяцев без проблем. В течение последних нескольких дней каждый раз, когда я вызываю команду Cygwin (например, ls
), команде требуется несколько секунд для «загрузки», прежде чем она действительно запустится. Если я попробую ту же команду из командной строки bash, она немедленно запустится («загрузится»).
В Часто задаваемые вопросы о Cygwin упоминается, что сетевые диски в PATH могут вызывать проблемы, поэтому я попробовал некоторые перестановки моей переменной PATH
и сетевого подключения. Ниже «полный PATH
» означает мой исходный путь; «короткий PATH
» означает путь только с каталогом bin Cygwin. Время сообщается с помощью команды time
.
Результаты тайминга для ls
Подключено к сети:
- Прогон
ls
в течениеbash
: 0,124 с - Запуск
ls
в CMD (полныйPATH
): 41,29 с. - Запуск
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
перед выполнением ls
Cygwin и после выполнения (пока он завис). Я делал это несколько раз и нашел по одной строке из каждого прогона, которая постоянно появлялась во время задержки:
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
netstat -a -n
в течение периода задержки и найдите соединения в состоянии SYN_SENT. Я видел симптомы, в целом похожие на эти, когда программное обеспечение пытается проверить сертификат SSL, но доступ к сети блокируется внешним брандмауэром. (Обычно, если у вас вообще нет сетевого подключения, попытка немедленно завершается неудачей, так что это будет согласованным.) Не обязательно использовать SSL, любой другой доступ к сети будет иметь аналогичный эффект, например, если Cygwin пытается самостоятельно обновление или что-то в этом роде. - person Harry Johnston   schedule 15.02.2015