假设我当前正在运行一个 screen 会话,我正在通过 putty 与之交互。我意识到回滚缓冲区太小,并且想增加它而不启动新的屏幕会话。
有办法做到这一点吗?
按 Ctrl+A,然后按 :,然后输入
scrollback 10000
例如获得 10000 行缓冲区。
您还可以通过添加设置默认回滚行数
defscrollback 10000
到您的
~/.screenrc
文件。
要滚动(如果您的终端默认不允许),请按 Ctrl+A,然后按 Esc,然后滚动(使用通常的 Ctrl+F 进入下一页或按 Ctrl +A 用于上一页,或仅使用鼠标滚轮/两根手指)。要退出滚动模式,只需按 Esc。
另一个提示:Ctrl+A然后I显示您当前的缓冲区设置。
手册页说明,您可以通过键入 Ctrl+A、:,然后发出
scrollback <num>
命令,在正在运行的会话中进入命令行模式。
正如已经提到的,我们有两种方法。
并且是交互式完成的,并且立即生效。
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(进入复制模式)。
然后使用 Up、Down 或 PgUp PgDown
进行导航然后再次按 ESC 退出该模式。
(额外信息:要复制,请按ENTER开始选择,然后再次按ENTER进行复制,简单又酷)
现在缓冲区更大了!
这就是重要细节的总结。
当您在“putty 会话”内启动“屏幕”会话时,会有最少量的“默认”缓冲区。我在工作中经常使用屏幕,所以我可以告诉您,您的“屏幕”会话中不会有“屏幕”缓冲区和“putty”缓冲区的组合。
通过添加
defscrollback 10000
设置默认回滚行数
到您的 ~/.screenrc
文件是正确的解决方案。
顺便说一下,我在我的
./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.6届时 VIRT 内存已达到 GB)。