如何增加正在运行的屏幕会话中的滚动缓冲区?

假设我有一个当前正在运行的屏幕会话,我正在通过putty进行交互。我已经意识到滚动缓冲区太小,想增加它没有开始一个新的屏幕会话。

有办法做到这一点吗?

189860 次浏览

手册页解释了你可以在运行会话中输入Ctrl+一个,然后发出scrollback <num>命令来进入命令行模式。

Ctrl+一个,然后按,然后键入

scrollback 10000

例如,要获得10000行缓冲区。

您还可以通过添加来设置默认的滚动行数

defscrollback 10000

到你的~/.screenrc文件。

要滚动(如果您的终端默认不允许),按Ctrl+一个,然后按Esc,然后滚动(通常的Ctrl+F用于下一页,Ctrl+一个用于上一页,或者只用鼠标滚轮/两个手指)。要退出滚动模式,只需按Esc

另一个提示:Ctrl+一个然后显示当前缓冲区设置。

有一个最小数量的“默认”缓冲区,当你启动一个“屏幕”会话在你的“putty会话”。我在工作中经常使用屏幕,所以我可以告诉你,你不会有'屏幕'缓冲和放大器的组合;'putty'缓冲区在你的'screen'会话。

通过添加defscrollback 10000来设置默认的滚动行数 到你的~/.screenrc文件是正确的解决方案。< / p >

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

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 mem)。

如上所述,我们有两种方法!

每个屏幕(会话)交互设置

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

然后输入scrollback 1000000,然后点击输入

你从屏幕上分离出来,然后回来!它将永远不变。

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

和永久的默认设置

这是通过将defscrollback 1000000添加到.screenrc (in home)来完成的

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

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

> cd ~ && vim .screenrc

然后你给它加上defscrollback 1000000 !

或者在一个命令中

> echo "defscrollback 1000000" >> ~/.screenrc

(如果尚未创建)

生效

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

并且所有新创建的屏幕都将具有设置的值!

检查屏幕有效缓冲区大小

检查类型CTRL + a后面跟着

结果会是

enter image description here

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

还要注意,当您以交互方式更改它时!立即生效,采用默认值!

滚动

CTRL +一个后面跟着ESC(进入复制模式)。

然后使用向上下来PgUp PgDown进行导航

ESC再次退出该模式。

(额外信息:复制时点击输入开始选择!然后输入再次复制!简单又酷)

现在缓冲区变大了!

< / p >

以上就是对重要细节的总结!