我试图Ctrlad,但惨败并输入Ctrld,现在屏幕不会响应我的命令。它们出现了,屏幕上运行的应用程序(我的世界服务器)仍然运行良好,但我无法发出服务器命令。
Ctrlad工作并重新连接screen -r -d -S minecraft
工作正常,但没有命令注册。
有什么办法可以恢复控制吗?
答案1
Ctrld通常配置为生成 EOF 信号,对于大多数 shell,默认情况下表示 shell 输入结束并且 shell 终止。但是,您已在 shell 中启动了另一个进程 (minecraft),因此它正在等待该进程终止。
无法撤消此操作。
为了防止将来出现这种情况,假设您使用的是 bash,请将环境变量设置IGNOREEOF
为大于 1 的数字,并且您将需要意外点击Ctrld这么多次。
答案2
当我需要解决完全相同的问题时,我发现了这篇特别的文章。我思考在阅读本文并在“死”屏幕窗口中尝试一些操作后,我偶然发现了答案。
情况:我在 bash 中使用“set -o vi”作为我的命令行编辑器。我使用“ESC k”向后滚动。我本想按 CTRL-C 取消回到空提示,但错误地按了 CTRL-D。当我这样做时,屏幕中的窗口被锁定......屏幕本身仍然很好,所有其他屏幕窗口都很好。
解决方案(?):我发现发送 XOFF (ctrl-s) 后发送 XON (ctrl-q) 可以“解冻”窗口。单独发送 XON——不先发送 XOFF——没有工作。
然而,我完全无法重现 CTRL-D 锁定。我不知道是什么条件导致了它!由于我无法重现问题,因此我无法测试我的解决方案,所以我不知道我是否真的找到了解决方案,或者它是否只是在一段时间后以某种方式“自行修复”。 *耸肩*
如果有人有机会测试这个,请回复! :o)