终端假死通常因tty驱动状态错乱,可用stty sane强制重置为POSIX安全配置(启用回显、关闭raw、恢复规范输入等),再执行reset;若无响应,先Ctrl+J确认shell存活,再盲打命令修复。

确认终端是否真“失联”
先别急着重启:按 Ctrl+J(即发送换行符 LF),若光标下移一行,说明 shell 仍在运行;再盲打 Ctrl+C 中断当前任务,接着输入 reset 回车,常能唤醒。若完全无响应,可试 Ctrl+Z 或 Ctrl+\ 中断前台进程,再操作。
用 stty sane 强制重置为安全状态
这是最关键的一步。“sane” 不是“正常”,而是 POSIX 定义的标准安全配置:启用回显、关闭 raw 模式、恢复规范输入(icanon)、重置行缓冲与控制字符(如 Ctrl+C、Ctrl+Z 的行为)。
直接输入:stty sane(即使没看到回显,也请准确敲完并回车)
若键盘完全无反馈,可用 Ctrl+V 后跟 Ctrl+J 发送原始换行,再盲打该命令。
成功后通常立即恢复光标闪烁和输入可见性;若仍乱码,紧接着执行 reset。
补充关键 stty 设置应对典型异常
某些工具会修改特定参数,需针对性还原:
- stty echo —— 恢复输入字符显示(解决“敲字看不见”的问题)
- stty onlcr —— 确保输出换行自动转为 CR+LF(兼容多数终端,修复光标不归位)
- stty -icanon —— 若发现必须按回车才响应命令,说明被设为非规范模式,用此恢复实时响应
- echo -e "\033c" —— 发送 ANSI 全屏清空指令,清除残留控制序列
预防下次再发生
在生产脚本或调试工具中,建议保存/恢复 tty 设置:
- 记录初始状态:stty -g > /tmp/tty.save
- 启动前临时切换(如进 raw 模式):stty raw -echo -icanon
- 退出后恢复:stty $(cat /tmp/tty.save)
- 或写成函数放入 ~/.bashrc:
tty_restore() { stty $(cat /tmp/tty.save 2>/dev/null) 2>/dev/null || stty sane; }

















