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

问题描述 投票:0回答:5

假设我当前正在运行一个 screen 会话,我正在通过 putty 与之交互。我意识到回滚缓冲区太小,并且想增加它而不启动新的屏幕会话。

有办法做到这一点吗?

linux gnu-screen
5个回答
430
投票

Ctrl+A,然后按 :,然后输入

scrollback 10000

例如获得 10000 行缓冲区。

您还可以通过添加设置默认回滚行数

defscrollback 10000

到您的

~/.screenrc
文件。

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

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


202
投票

手册页说明,您可以通过键入 Ctrl+A:,然后发出

scrollback <num>
命令,在正在运行的会话中进入命令行模式。


19
投票

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

 每屏幕(会话)交互设置

并且是交互式完成的,并且立即生效。

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进行复制,简单又酷)

现在缓冲区更大了!

这就是重要细节的总结。


11
投票

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

通过添加

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

顺便说一下,我在我的

./screenrc
文件中使用了“defscrollback 200000”。


8
投票
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.6届时 VIRT 内存已达到 GB)。

© www.soinside.com 2019 - 2024. All rights reserved.