我有 Ubuntu 16.04.04 LTS 服务器。我正在做一些工作,tty1
然后午休。与此同时,我的桌面显示器进入休眠状态。当我回来时,我按下Esc并唤醒我的屏幕,我在tty1
提示符处,正是我离开的地方。但是,当我开始输入时,我注意到我输入的字符没有在提示符处显示。就好像键盘不工作一样,但我可以看到屏幕上预先存在的文本会随着我每次按键而闪烁。所以,我认为(A)物理键盘连接不是问题,(B)由于短暂的闪烁,按键正在某处注册。
只是为了仔细检查,我按CtrlAltF2下去tty2
并开始输入(用户名和密码),我在键盘上按下的字符显示正常。因此,我的键盘似乎在tty2
(以及在tty3
、tty4
等)中运行良好。
所以,我回去了tty1
,再一次,按键没有显示。tty1
除了转到另一个终端的功能键之外,似乎没有任何组合键起作用。
因为,我不知道如何让我的按键显示在 中tty1
,我尝试了shutdown
,但我无法shutdown
进入tty1
。所以,我去了tty2
并进入shutdown
。在tty2
中,该命令注册并说明了计算机将关闭的时间。到了关机的时候,会显示一条消息,指出(我不记得确切的措辞)正在发生另一个过程。我试图CtrlC退出关机,但它也卡住了。所以,我去那里tty3
尝试关闭并再次卡住。所以,我最终按下了电脑上的电源按钮几秒钟,然后以丑陋的方式关闭了我的电脑。当计算机重新启动时,问题消失了,一切似乎都正常工作。
按键不显示(但使屏幕闪烁)是tty1
怎么回事? 渴望了解这一点。
基于字符的控制台(
tty1
等tty2
)是一个终端仿真器:它模仿串行端口连接终端的操作,并带有一些特定于 Linux 的扩展。该仿真包括对 XON/XOFF 握手的支持......并且用于这种握手的字符可以很容易地在键盘上产生,即使是偶然的。如果您按 Control-S,它会发送 XOFF 控制字符,该字符会停止输出到终端,直到您按 Control-Q(也称为 XON 字符)。请注意,输入实际上并没有与输出一起停止:如果您在 XOFF 生效时键入任何内容,那么只要您按下 Control-Q,这些字符就会被输出。
可以使用
stty
命令控制此功能,特别是使用ixon
和ixany
标志。要完全禁用该功能,请使用stty -ixon
; 要再次启用它,请使用stty ixon
. 如果您stty ixany
在启用该功能时使用,任何键都会恢复输出;如果使用stty -ixany
,则只能使用 Control-Q 来恢复。该
ixoff
标志用于反向传输:如果服务器端输入缓冲区有溢出的危险,服务器将向终端发送一个 Control-S 以使其停止传输,直到处理先前的输入。在 Linux 控制台上,这显然不是很有用,因为“服务器”和“终端”都共享同一个物理处理器。但是该ixon
标志仍然有用,因为您可以使用它来暂停滚动文本以阅读它。Linux 控制台的默认状态似乎是
ixon -ixoff -ixany
,即 Control-S 可以停止输出到控制台,只有 Control-Q 可以恢复它。