假设我有一个正在运行的屏幕会话,我正在通过putty进行交互。我已经意识到滚动缓冲区太小,希望在不启动新的屏幕会话的情况下增加它。

有办法做到这一点吗?


当前回答

手册页解释说,您可以在正在运行的会话中输入Ctrl+ a,:,然后发出scrollback <num>命令,从而进入命令行模式。

其他回答

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

通过添加defscrollback 10000设置默认的滚动行数 致你的~/。Screenrc文件是正确的解决方案。

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

按Ctrl+A然后:然后输入

scrollback 10000

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

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

defscrollback 10000

致你的~/。screenrc文件。

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

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

手册页解释说,您可以在正在运行的会话中输入Ctrl+ a,:,然后发出scrollback <num>命令,从而进入命令行模式。

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. 

我设置了~/。“defscrollback 123456789”,当我启动一个屏幕时,我的整个系统冻结了10分钟,然后才回到我能够杀死屏幕进程的点(到那时,它正在消耗16.6GB的VIRT mem)。

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

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

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

CTRL + A后跟:然后输入scrollback 1000000,然后按ENTER

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

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

和永久的默认设置

通过将defscrollback 1000000添加到.screenrc(在home中)来实现

Defscrollback和not scrollback (def代表默认)

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

> cd ~ && vim .screenrc

并向其添加defscrollback 1000000 !

或者在一个命令中

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

(如果尚未创建)

生效

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

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

检查屏幕有效缓冲区大小

要检查,输入CTRL + A后跟i

结果会是

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

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

滚动

按CTRL+ A + ESC(进入拷贝模式)。

然后导航与向上,向下或PgUp PgDown

再次按ESC退出该模式。

(额外的信息:复制按ENTER开始选择!然后再次进入复制!简单又酷)

现在缓冲区变大了!

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