我发现,如果我在 byobu 屏幕中进入“复制模式”或“回滚模式”,然后断开连接并让其继续运行,则缓冲区将填满并最终阻止我在屏幕上运行的进程。(可能是因为进程被阻止写入 stdout,因为没有人会消耗字节。)
这种行为有点令人沮丧。例如,
离开屏幕时自动退出复制/回滚模式,
或者
一旦缓冲区已满,让处于复制/回滚模式的视图的位置向前移动,以允许进程继续执行
很高兴听到有关此事的任何建议。
答案1
您的评估是正确的,在回滚模式窗口中运行的程序正在停止,因为其输出缓冲区已满,并且暂停等待写入。这种行为既正确又可取;用户进入回滚模式来查看屏幕内容,但正如您所注意到的,当会话分离时,这既不方便也不明显。
不幸的是,gnu-screen 和 tmux 似乎都缺少此功能。byobu 无法在包装器中修复它,因为它无法检测给定窗口的回滚状态,也无法使用外部命令将窗口从中分离出来,尽管它可以像用户一样向终端发送命令,如果它能够检测或记住回滚状态。screen 和 tmux 似乎都没有包括在终端分离时自动从回滚模式恢复的功能。需要补丁。