16

Внезапно все команды Cygwin, которые я запускаю из командной строки Windows, имеют задержку ~ 10-20 секунд перед их выполнением, поэтому Cygwin становится полностью непригодным для использования. Я уже пытался переустановить безуспешно.

Выполнение команд из окна оболочки Bash, работает нормально (при запуске Bash я вижу отставание). Удаление всех записей из моей локальной переменной PATH не влияет. Я использую Windows 7 x64 и Cygwin x64 v 1.7.34 (0.285/5/3).

5 ответов5

12

Иногда я работаю в домене Windows с тысячами пользователей.

Я не хочу прибегать к какому-либо подходу. Я бы предпочел, чтобы Cygwin кэшировал информацию о пользователях по мере необходимости. Оказывается, это легко сделать.

Просто запустите cygserver при входе в систему.

Для правильной настройки запустите cygserver-config только один раз. Это настроит cygserver для запуска в качестве службы Windows с правильными учетными данными. Сделайте это из окна администратора Cygwin.

$ cygserver-config
Generating /etc/cygserver.conf file

Warning: The following function requires administrator privileges!

Do you want to install cygserver as service?
(Say "no" if it's already installed as service) (yes/no) yes

The service has been installed under LocalSystem account.
To start it, call `net start cygserver' or `cygrunsrv -S cygserver'.

Further configuration options are available by editing the configuration
file /etc/cygserver.conf. Please read the inline information in that
file carefully. The best option for the start is to just leave it alone.

Basic Cygserver configuration finished. Have fun!

Что cygserver делает для меня?

Посмотрите документацию на сайте Cygwin. По сути, он выполняет пользовательское кэширование, а также обеспечивает работу IPC между всеми процессами Cygwin .

Конечно, ваш пробег может варьироваться, но теперь это мой любимый способ работы. Я должен был сделать это много лет назад.

10

Кажется, это связано с аутентификацией. Для меня 40 секунд, чтобы получить что-то для выполнения. Однако после этого процесс создания в этом дереве процессов кажется довольно быстрым.

https://www.cygwin.com/faq.html#faq.using.startup-slow

Так что я

  • Сделал кеш моей локальной аутентификации и моих собственных учетных данных Active Directory (AD)

    $ mkpasswd -l -c >/etc/passwd
    $ mkgroup -l -c >/etc/group
    
  • Сказал Cygwin просто использовать эти два файла

    $ echo 'passwd: files' >/etc/nsswitch.conf
    $ echo 'group: files' >>/etc/nsswitch.conf
    

Я убил все процессы Cygwin и начал снова. Теперь все работает хорошо и быстро. Я уберу этот хак при каждом обновлении файла DLL Cygwin и посмотрю, как у меня получится.

Это всего лишь эскиз - вы, по крайней мере, захотите сохранить резервные копии!

РЕДАКТИРОВАТЬ

Устаревшее. Смотрите мой более свежий ответ на этот вопрос для лучшего (ИМХО) решения.

2

Прочитайте обновление ниже, это оказалось не проблема.

Я страдал от экстремальной версии этой проблемы, хотя она периодически. Когда проблема существует, все команды занимают от 20 секунд, а в наиболее экстремальных случаях - несколько минут. Это произойдет в течение нескольких дней, а затем исчезнет на несколько дней. Кстати, у меня очень быстрая система с большим количеством DRAM, SSD накопителей и т.д.

Теперь у меня наконец есть теория-кандидат, которая могла бы что-то объяснить. Я только что обновил Cygwin с помощью setup-x86_64.exe (что я делаю нечасто), и после этого все снова становится очень отзывчивым (буквально в тысячи раз быстрее, чем раньше). Я предполагаю, что rebaseall в конце обновления - вот что изменило ситуацию.

Обновление: ускорение, которое я видел прежде, было очевидно совпадением; когда проблема появилась через месяц, это не помогло. Оказывается, отключение живой защиты Защитника Windows мгновенно устраняет замедление.

1

Вот как эта проблема проявилась у меня. Для первых, скажем, 20 команд, введенных по приглашению Cygwin, это было быстро, но затем оно внезапно стало мучительно медленным.

Я попробовал вышеуказанное исправление аутентификации. Это не сработало для меня.

Cygwin FAQ сообщает, что Cygwin не любит пробелы в именах пользователей или групп. См. В имени для входа в Windows есть пробел, это вызовет проблемы? ,

В имени моей группы был пробел, поэтому я изменил его в /etc/group сгенерированном в исправлении аутентификации, на подчеркивание. Это тоже не сработало.

Другие сообщения о той же самой проблеме сообщили, что это привело к антивирусному сканеру. Я заменил свой существующий антивирусный сканер (System Center Endpoint Protection) на Sophos. Это решило проблему для меня.

Надеюсь, это поможет.

1

В качестве сноски я только что обнаружил, что мне пришлось пересобрать passwd и group после обновления Cygwin. Поскольку медленное поведение происходило снова, автоустановка части установки заняла несколько дней.

Мне также не нужно было изменять nsswitch.conf по умолчанию в моей системе (Windows 10).

Кстати, медленное поведение также проявилось в командной строке Windows и переносимых приложениях. Некоторым портативным приложениям требовалось несколько часов, чтобы создать окно при запуске.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .