有時在linux下shell終端中,會突然出現終端應用卡死,無法接受鍵盤輸入, 但是其它分屏, 系統都是正常的。這本來是一個終端的很老的功能, 叫軟件流控制(XON/XOFF flow control),具體就是當client(terminal emulator), 也就是常用的終端模擬器無法接受更多的數據的時, 終端會發送一個 "XOFF" 信號 告訴發送數據端暫停發送, 直到收到"XON"信號,其中發送的 "XOFF" 是告訴內核的 tty 驅動將正在發送數據的進程設置為休眠狀態, 直到 tty 驅動發送 "XON" 告訴內核恢復進程, 就好像它從來沒有停過一樣。
默認情況下,Ctrl-s會啟用終端的滾動鎖定, 此時禁用終端模擬器的滾動功能 (通過發送 "XOFF" 信號暫停軟件的輸出 ),終端軟件沒有任何輸出,造成假死的現象,一般情況都是無意識按下了ctrl+s快捷鍵而已。相應的,Ctrl-q 會禁用滾動鎖定, 恢復終端滾動 (通過發送 "XON" 信號來恢復軟件的輸出).
可以修改配置文件, 在~/.bash_profile 或者~/.bashrc的配置文件里面加上下面的參數並且重啟加載bash配置即可要禁用這個功能,就不會假死了:
stty -ixon
source .bashrc
順便提一下,linux下終端ctrl+z命令會將當前任務切換到后台執行,就無法看到了,可以使用fg命令恢復至前台。