【问题标题】:How do I increase the scrollback buffer in a running screen session?如何在正在运行的屏幕会话中增加回滚缓冲区?
【发布时间】:2012-02-04 07:56:12
【问题描述】:

假设我有一个当前正在运行的 screen 会话,我正在通过 putty 与之交互。我意识到回滚缓冲区太小,希望在开始新的屏幕会话的情况下增加它。

有没有办法做到这一点?

【问题讨论】:

  • 以防万一有人想要增加回滚缓冲区开始一个新会话:screen -h <numlines>

标签: linux gnu-screen


【解决方案1】:

man page 解释说,您可以在运行的会话中通过键入 Ctrl+A: 进入命令行模式,然后发出scrollback <num> 命令。

【讨论】:

  • 您必须分别为当前屏幕的每个窗口执行操作。
  • 其中<num>是回滚的行数
  • 如果你发现你达到了默认的最大缓冲区不能显示更多的历史记录,并且由scrollback <num>设置,它不再帮助你扩展缓冲区,你需要重做最后一个命令来获取整个历史缓冲区。
【解决方案2】:

Ctrl-a 然后按 : 然后键入

scrollback 10000

以获取 10000 行缓冲区为例。

也可以通过添加设置默认的回滚行数

defscrollback 10000

到您的~/.screenrc 文件。

要滚动(如果您的终端默认不允许您滚动),请按 Ctrl-a ESC 然后滚动(使用通常的 Ctrl- f 用于下一页或 Ctrl-a 用于上一页,或仅使用鼠标滚轮/两指)。要退出滚动模式,只需按 ESC

另一个提示:Ctrl-a i 显示您当前的缓冲区设置。

【讨论】:

  • +1 提示 defscrollback 在 Ubuntu 12.10 中设置为 1024(我必须在工作中使用)。
  • byobu-screen on Ubuntu 12.04 似乎将 defscrollback 设置为 10000
  • 我想指出的是,如果您的screenrc为您打开了附加条款,您需要在打开窗口之前放置defscrollback,否则他们只会得到默认的1024
  • 它不能在 Mac 上运行。我把startup_message off' and 'defscrollback 5000' into my newly created ~/.screenrc` 放在了第一行,但第二行似乎被忽略了。
【解决方案3】:

当您在“putty 会话”中启动“屏幕”会话时,会存在最少量的“默认”缓冲区。我在工作中经常使用屏幕,所以我可以告诉你,在你的“屏幕”会话中你不会有“屏幕”缓冲区和“腻子”缓冲区的组合。

通过添加defscrollback 10000设置默认的回滚行数 到您的 ~/.screenrc 文件是正确的解决方案。

顺便说一句,我在./screenrc 文件中使用了“defscrollback 200000”。

【讨论】:

    【解决方案4】:
    WARNING: setting this value too high may cause your system to experience a significant hiccup. 
    The higher the value you set, the more virtual memory is allocated to the screen process when initiating the screen session. 
    

    我将 ~/.screenrc 设置为“defscrollback 123456789”,当我启动屏幕时,我的整个系统冻结了整整 10 分钟,然后才回到我能够终止屏幕进程的点(这是到那时消耗 16.6GB 的 VIRT 内存)。

    【讨论】:

      【解决方案5】:

      正如已经提到的,我们有两种方法!

       每屏(会话)交互设置

      而且它是交互式完成的!并立即生效!

      CTRL + A 后跟 : 然后我们输入 scrollback 1000000 并点击 ENTER

      你离开屏幕然后回来!永远都是一样的。

      您打开另一个新屏幕!并且该值再次重置为默认值! 所以这不是全局设置!

       以及永久默认设置

      这是通过将defscrollback 1000000 添加到.screenrc 来完成的(在家里)

      defscrollback 而不是scrollback(def 代表默认)

      您需要知道的是文件是否未创建! 你创造它

      > cd ~ && vim .screenrc
      

      然后你将defscrollback 1000000 添加到它!

      或者在一个命令中

      > echo "defscrollback 1000000" >> .screenrc
      

      (如果尚未创建)

      生效

      当您将默认值添加到 .screenrc!重新附加时已经运行的屏幕将不会生效! .screenrc 在屏幕创建时运行!这是有道理的!就像普通的控制台和 shell 启动一样!

      并且所有新创建的画面都会有设定值!

      检查屏幕有效缓冲区大小

      检查类型 CTRL + A 后跟 i

      结果将是

      重要的是,缓冲区大小+ 符号后的数字
      (在插图中我将其设置为 1 000 000)

      请注意,当您以交互方式更改它时!效果立竿见影,取默认值!

      滚动

      CTRL+ A 后跟 ESC(进入复制模式)。

      然后使用 UpDownPgUp PgDown

      导航

      然后再次 ESC 退出该模式。

      (额外信息:复制点击ENTER开始选择!然后再次ENTER复制!简单而酷)

      现在缓冲区更大了!

      这就是重要细节的总结!

      【讨论】:

      • 很高兴知道如何滚动的步骤!
      • 谢谢。学习了一个检查屏幕缓冲区大小的新技巧:CTRL + A 后跟 i
      猜你喜欢
      • 1970-01-01
      • 2013-09-16
      • 2013-01-21
      • 1970-01-01
      • 2010-10-06
      • 2020-01-01
      • 1970-01-01
      • 2015-02-21
      • 2016-07-20
      相关资源
      最近更新 更多