我一直在使用我的Windows CMD提示中的Cygwin命令几个月没有问题。在过去几天内,每次调用Cygwin命令(例如ls
)时,该命令在实际运行之前需要几秒钟才能“加载”。如果我在bash提示符下尝试相同的命令,它会立即运行(“加载”)。
Cygwin FAQ提到PATH中的网络驱动器可能会导致问题,所以我尝试了PATH
变量和网络连接的一些排列。下面,“完整PATH
”表示我的原始路径设置; “short PATH
”表示仅包含Cygwin bin目录的路径。通过time
命令报告时间。
ls
连接到网络:
ls
内运行bash
:0.124 s ls
(完整PATH
):41.29 s ls
)内运行PATH
:38.56 s 与网络断开连接:
ls
内运行bash
:0.125秒ls
(完整PATH
):0.17 s ls
)内运行PATH
:0.19 s cygcheck
我跑cygcheck -s
并注意到:
Warning: There are multiple cygwin1.dlls on your path
虽然这可能是由于在Cygwin的cygcheck
目录中运行bin
。我完全卸载并重新安装了Cygwin,但仍然看到同样的问题。
netstat
我在执行Cygwin的netstat -a -n
之前和执行之后(当它停止时)运行ls
。我这样做了几次,发现每次运行中有一行在延迟期间一直出现:
UDP 127.0.0.1:55030 *:*
端口号从测试更改为测试。
strace
结果我在strace
命令上运行了Cygwin的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
答案 0 :(得分:21)
Cygwin常见问题解答中的section解决了启动时间慢的问题。 Cygwin最近更改为使用Active Directory查找进行身份验证,而不是使用平面文件。更改/etc/nsswitch.conf
中的默认值
passwd: files db
group: files db
到
passwd: files
group: files
跳过AD查找。我的Cygwin命令现在又快了。