在byobu / screen中分离时退出复制/回滚模式

aio*_*obe 7 gnu-screen byobu

我发现如果我在 byobu 屏幕中进入“复制模式”或“回滚模式”,从它分离并保持运行,缓冲区将填满并最终阻塞我在屏幕中运行的进程。(大概是因为该进程被阻止写入 stdout,因为没有人消耗字节。)

这种行为是毁灭性的。是否有可能例如

  1. 从屏幕分离时自动退出复制/回滚模式,

    或者

  2. 一旦缓冲区已满,让处于复制/回滚模式的视图的位置向前移动,以允许进程继续执行

很高兴听到有关这方面的任何建议。

And*_*zek 4

您的评估是正确的,在回滚模式窗口中运行的程序正在停止,因为其输出缓冲区已满并且被挂起等待写入。这种行为既正确又可取;用户进入回滚模式来查看屏幕内容,但正如您所注意到的,当会话分离时,这既不方便也不明显。

不幸的是,gnu-screen 和 tmux 似乎都缺少这个功能。byobu 无法在包装器中修复它,因为它无法检测给定窗口的回滚状态,也无法使用外部命令将窗口打破,尽管它可以像用户一样向终端发送命令如果它能够检测或记住回滚状态的话。screen 和 tmux 似乎都不包含在终端分离时自动从回滚模式恢复的功能。需要一个补丁。