就我的经验而言,我阿里云的 win server 2012 的 powershell , win10 的 cmd 都存在标准输出卡死的问题,用 docker 的时候出现,现在我在一台 win10 的 cmd 里运行 php-cli 也存在这个 bug 。一旦卡住,你就需要切到该 cmd 中,然后按一下回车,好了。。。。
cmd 是基础设施,这么傻逼的 bug 简直丧心病狂,而且这么一搞我的个人应用就没法跑了。。。
win10 垃圾,我丝毫没有感受到 win10 对 win7 有什么改进,倒是一堆垃圾 feature , win7 还可以战斗 20 年!
1
gouchaoer OP 这个 bug 怎么修呢,现在我业务没法跑啊
|
2
jjx 2017-03-29 17:08:00 +08:00
现在 windows 10 中用 git submodule foreach git pull origin master 时 也发现这个情况, 按一下回车就继续了
|
3
gouchaoer OP @jjx 我没发按回车啊,我的 cmd 程序有业务一直都在跑,这么一卡死就 stop the world forever 了。。。。。。。。为什么微软这么傻逼?这种 bug 如果说 win10 是消费者的,那为啥 win server2012 的 powershell 也存在这个问题?谁能告诉我为什么微软这么傻逼?做个系统越做越烂
|
4
Yuwen 2017-03-29 17:26:39 +08:00 via Android
没记错的话 win10 很早测试版上就一直存在
|
5
laxenade 2017-03-29 17:30:17 +08:00
从来没遇到过呢 不如试试 2016 吧(逃
|
6
webjin1 2017-03-29 17:30:39 +08:00 via Android
中文输入法导致的吗?
|
7
wohenyingyu02 2017-03-29 17:30:46 +08:00
|
8
Quaintjade 2017-03-29 17:46:48 +08:00
Bug 10 就是个一团败絮的系统,除了给小白用的基本功能,稍微高级些的功能都是各种脑残 bug ,正式版的稳定度连 beta 都达不到。
PowerShell 参数明确指定$False 结果却是$True 这种傻缺错误都有: > Add-VpnConnection -Name "TestVPN" -TunnelType Ikev2 -SplitTunneling $False -PassThru SplitTunneling : True http://image18.poco.cn/mypoco/myphoto/20170327/22/5657397520170327224548078.jpg |
9
Osk 2017-03-29 17:50:39 +08:00 via Android
感觉像一不小心点了鼠标开始选字了。按 Enter 恢复。关掉快速编辑模式试试
|
10
21grams 2017-03-29 17:56:41 +08:00
肯定是鼠标点中了吧,我一直用 win10 从来没遇到这种问题。
|
11
VYSE 2017-03-29 17:56:52 +08:00
你需要 ConEmu 甚至干脆 Bash on Ubuntu on Windows + ConEmu
|
12
Quaintjade 2017-03-29 18:00:44 +08:00
哦对了, cmd 的功能会逐渐被 PowerShell 取代,所以估计巨硬根本就懒得修 cmd 。
比如说 netsh 的 tcp/ip 就有如下提示: C:\>netsh netsh>int In future versions of Windows, Microsoft might remove the Netsh functionality for TCP/IP. Microsoft recommends that you transition to Windows PowerShell if you currently use netsh to configure and manage TCP/IP. Type Get-Command -Module NetTCPIP at the Windows PowerShell prompt to view a list of commands to manage TCP/IP. Visit http://go.microsoft.com/fwlink/?LinkId=217627 for additional information about PowerShell commands for TCP/IP. |
13
weiceshi 2017-03-29 20:19:27 +08:00 1
@Quaintjade
如果你不熟悉一个命令的话,你可以查一下文档 https://technet.microsoft.com/en-us/itpro/powershell/windows/vpn-client/add-vpnconnection Add-VpnConnection [-Name] <String> [-ServerAddress] <String> [-RememberCredential] [-SplitTunneling] [-Force] [-PassThru] [-ServerList <CimInstance[]>] [-DnsSuffix <String>] [-IdleDisconnectSeconds <UInt32>] [-PlugInApplicationID] <String> -CustomConfiguration <XmlDocument> [-CimSession <CimSession[]>] [-ThrottleLimit <Int32>] [-AsJob] [-WhatIf] [-Confirm] [<CommonParameters>] 假如是 [-SplitTunneling]<Boolean>这种形式,那么才是你的用法。 正确的用法是 如果带 -SplitTunneling 那么就是 true ,不带就是 false 整个帖子都应该 move to [然而并没有] |
14
polun 2017-03-29 20:27:56 +08:00
貌似把"变速编辑“取消就行了。
|
15
weiceshi 2017-03-29 20:33:48 +08:00
@polun
是的,关闭快速编辑后, cmd 里内容不再能被选中 这个获取焦点后 pause 的功能,目的是有大量输出内容,快速滚屏的情况下,方便选中并复制内容 还是那句话,整个帖子都该 move to [然而并没有] |
16
Quaintjade 2017-03-29 20:45:03 +08:00 via Android
@weiceshi
你说的的确没错。 然而这不是更傻缺吗? 另一个 cmdlet Set-VpnConnection 也有-SplitTunneling ,用法却是 [-SplitTunneling] <Boolean>。明明完全相同的 parameter ,一个要带值,另一个本身就是个开关,明显是坑人。 https://technet.microsoft.com/en-us/library/jj554823(v=wps.630).aspx 退一步说,用法不同我也认了,但既然是开关,为什么带了值也不报错?这 TM 还是在坑人。 |
17
gouchaoer OP @weiceshi 我可是高级爬虫工程师,这种 bug 我搜遍百度都搞不定,然后你告诉我这是 feature ?
|
18
weiceshi 2017-03-29 21:22:24 +08:00
@gouchaoer
https://www.google.com.hk/search?q=cmd+%E5%8D%A1%E4%BD%8F 第一页第三条就是 [Quote] cmd 窗口输出卡住的问题 博客分类: 经验记录 JSP 访问一个 jsp ,该 jsp 中含有很多 System.out.println 的打印语句,某次操作突然发现控制台不输出了,有时输出有时不输出这种不确定性问题很难推断,曾一度怀疑是 1. jetty 本身问题 2. response.flushBuffer 3. System.out.println 4. System.out.println 过多 最后一一排除,原来是鼠标点中了 cmd 窗口,导致它处于选定状态,即使最小化后又切回原系统, System.out.println 资源被占用,该语句又是单线程,所以程序流程就被卡在了这里,导致卡死状态,做一个试验,如果是在新的线程中去打印,然后选定控制台,看会不会卡住: [Quote end] |
20
uuair 2017-03-29 21:47:09 +08:00
vps 上要是用 windows 系统,如果用最低配的系统,最低的带宽, vnc 连上的时候会不会卡的要死啊?那还有体验么? windows 现在可以用 ssh 登陆了么?
|
21
weiceshi 2017-03-29 21:49:29 +08:00 2
@Quaintjade
powershell 的 required 参数有个属性叫做 position ,固定参数可以免参数名 比如 Add-VpnConnection 有两个固定参数, -Name 和 -ServerAddress 的 position 分别是 1 和 2 那么在不指定参数名称的情况下,出现的第一个 value 被指定到 Name ,同理第二个参数被指定到 ServerAddress (假如已经指定了 ServerName 的参数名,那么顺延) 所以拿你的命令行举例: Add-VpnConnection -Name "TestVPN" -TunnelType Ikev2 -SplitTunneling $False -PassThru $False 并不是赋给了 SplitTunneling ,而是作为未指定参数名的第一个 value 出现的 因为已经指定了 Name ,所以$False 被赋给了参数 ServerAddress 所以你的命令行并不是 [为什么带了值也不报错] ,而是相当于: Add-VpnConnection -Name "TestVPN" -TunnelType Ikev2 -SplitTunneling -ServerAddress $False -PassThru 如果你再添加一个未指定参数名的 value ,就会报错了,因为没有第三个 required 参数。 所以继续然而并没有 ps :其实这种基本知识,你用两遍就应该知道了。自己获取知识的能力对于码农来说是最重要的了 |
22
KirkZheng 2017-03-29 21:49:32 +08:00 via Android
我倒是认为 win10 有很大的改进,设计哲学深得我心,各种同步。
|
23
Quaintjade 2017-03-29 22:02:31 +08:00
@Quaintjade
我自问自答一下吧。 不报错是因为 PowerShell 里必需参数和可选参数、位置参数和命名参数的顺序可以随便混的绝赞 feature ,结果就是你以为是一个参数名+参数值的组合, PowerShell 却认为是一个无值的命名参数+一个必需参数的值(或一个可省略名称的命名参数的值)。恰好这个参数值又是字符串型的,于是$False 自动转成字符串, gg 当然还有更倒霉的情况,例如你输了 false 而对应位置参数正好接受 boolean ,你粗扫一眼看到报错提示 boolean 值应该写$False ,然后你改成$False 就不报错了 PS C:\> Add-VpnConnection -Name "TestVPN" -ServerAddress "1.2.3.4" -TunnelType Ikev2 -EncryptionLevel "Required" -AuthenticationMethod "eap" -SplitTunneling False -PassThru Add-VpnConnection : Cannot process argument transformation on parameter 'AllUserConnection'. Cannot convert value "System.String" to type "System.Management.Automation.SwitchParameter". Boolean parameters accept only Boolean values and numbers, such as $True, $False, 1 or 0. At line:1 char:150 + ... "Required" -AuthenticationMethod "eap" -SplitTunneling False -PassTh ... + ~~~~~ |
24
Quaintjade 2017-03-29 22:14:26 +08:00
@weiceshi
已经发现了,然而同样是巨硬家的 C#就不允许这种参数顺序混乱的 feature 。 https://msdn.microsoft.com/en-us/library/dd264739.aspx 另外技术文档依然继续坑人,比如告诉你的 synopsis 是: Add-VpnConnection [-Name] <String> [-ServerAddress] <String> [[-TunnelType] <String>] [-AllUserConnection] [-RememberCredential] [-SplitTunneling] [-Force] [-PassThru] [[-L2tpPsk] <String>] [-UseWinlogonCredential] [-ServerList <CimInstance[]>] [-DnsSuffix <String>] [-IdleDisconnectSeconds <UInt32>] [[-EapConfigXmlStream] <XmlDocument>] [[-AuthenticationMethod] <String[]>] [[-EncryptionLevel] <String>] [-MachineCertificateIssuerFilter <X509Certificate2>] [-MachineCertificateEKUFilter <String[]>] [-CimSession <CimSession[]>] [-ThrottleLimit <Int32>] [-AsJob] [-WhatIf] [-Confirm] [<CommonParameters>] 你看到有三个参数的顺序是 -AllUserConnection ,-AuthenticationMethod ,-EncryptionLevel 然而你只有查看了具体的 position 属性之后才会发现它们的顺序其实是 -EncryptionLevel(4), -AuthenticationMethod(5), -AllUserConnection(7) 是的,你可以主张这都是 feature ,而且你都写了文档了。然而这些都是违反基本知识(或者说常识)的坑,说白了还是 MDZZ 。 我哪天写个命令的参数,名称叫 -EnableX ,实际上用处却是禁用 X ,并且在详细文档中正确地注明用处就是禁用,那么那些上当的人都是自己不看文档的错对吧? |
25
manhere 2017-03-29 22:16:03 +08:00 via Android
一直用管道方式执行,未发现这个问题
|
26
gouchaoer OP @uuair 那种 adsl 拨号的 vps 就是,基本 xp 和 win7 系统,不会卡
|
27
weiceshi 2017-03-29 22:26:56 +08:00 via Android
@Quaintjade
不要打滚了,错就错了好不好。 微软给小白用户准备了 powershell ise , cortana 里直接搜就有,打开后右边窗口搜索命令,然后可视化编辑参数,勾勾点点然后点执行就好,绝不出错。 |
29
jsq2627 2017-03-29 22:33:43 +08:00 1
1. 终端和 shell 要区分看来看。 cmd 和 powershell 是 shell ,那个难用的窗口是终端,吐槽 win 命令行难用的大都是吐槽终端难用。
2. 楼主提的问题,熟悉 win 的人一眼就知道是鼠标点了某个地方选中了文本。右键窗口标题,属性,把快速编辑模式关掉就能避免这个问题。 3. powershell 的设计哲学和 Linux 下的 shell 非常不一样,配合好一点的编辑器或者 IDE 会写的很爽,直接在终端敲是很幸苦很容易出错的。 4. 受不了原生 conhost 可以试试 conemu 或者 cmder ,做了很多改进,再不行还有 cygmin/MSYS minty 能用。看楼主的需求是服务器应用,那正确的做法是安装成 windows service 来跑。 5. 楼主感受不到 win10 相比 win7 对开发者有什么变化,是因为没有进行 windows / .net 相关的开发。对于一个 windows 平台上的开发者相信也是感受不到 Ubuntu 16.04 和 14.04 有什么区别的。 6. windows 是比 *nix 更难掌控的一个平台,有问题勿喷,尝试了解它的哲学,有 bug 去反馈,觉得自己牛那就造轮子来改善这个世界。何必发牢骚,自己不爽,看了的人也不爽。 |
30
Quaintjade 2017-03-29 22:43:33 +08:00
@weiceshi
powershell ise 直接新建一个.ps1 文件,然后右键 edit 就有。我一般直接编辑命令 /参数,用 tab 自动完成。 你说我不看文档理解错了,这没问题,我承认。然而我并没有打滚。 我说过了微软大可以搞各种 ZZ 的反常识的 feature ,并在技术文档里详细地描述这些 feature ,然而 ZZ 就是 ZZ 。常识本该可以节省学习时间,而不该花更多时间去学习反常识的所谓“基本知识”、重新踩各种基本的坑。 |
31
Quaintjade 2017-03-29 22:50:01 +08:00
|
32
xrlin 2017-03-29 23:02:20 +08:00 via iPhone
以前也很头疼这个问题,貌似设置下终端关闭快速编辑模式就可以解决
|
33
lazycat 2017-03-30 07:32:47 +08:00 via Android
感觉这是高级爬虫工程师被黑的最惨的一次
|
34
vvv123 2017-06-03 10:58:02 +08:00
@gouchaoer #17 “高级爬虫工程师”是楼主自封的吗?你搞程序不用谷歌,搞毛啊。百度只是全球最大的中文搜索引擎,而程序是洋人发明的,像你这么“高端”的问题百度能解决就奇怪了。
当年我为了搜索一个基本的 Win32 问题,百度搜出来的结果相当少,主要都是国内网站。可是 E 文类似的问题已经问过很多遍了,用国外搜索引擎搜索都一大堆,而且针对性很强。 |
35
gouchaoer OP @vvv123 我是国内少有的高级爬虫开发工程师,看我 offer:
英语太难了,翻墙太难了,为什么你们能把那么难的工具用的那么舒服丫? “程序是洋人发明的”,既然英语那么好那你一定喜欢混 hacker news、reddit programming 咯,干嘛上 v2ec 中文社区丫 |
36
fangxing204 2020-10-16 12:14:52 +08:00
Quick edit mode?
|