假设我有一个正在运行的屏幕会话,我正在通过putty进行交互。我已经意识到滚动缓冲区太小,希望在不启动新的屏幕会话的情况下增加它。
有办法做到这一点吗?
假设我有一个正在运行的屏幕会话,我正在通过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 10000
例如,要获得10000行缓冲区。
您还可以通过添加来设置默认的滚动行数
defscrollback 10000
致你的~/。screenrc文件。
要滚动(如果您的终端默认不允许),按Ctrl+A然后Esc然后滚动(通常用Ctrl+F表示下一页或Ctrl+A表示上一页,或者只用鼠标滚轮/两个手指)。退出滚动模式,只需按Esc键。
另一个提示:Ctrl+A然后I显示当前缓冲区设置。
如上所述,我们有两种方法!
每个屏幕(会话)交互设置
而且它是交互式的!并立即生效!
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开始选择!然后再次进入复制!简单又酷)
现在缓冲区变大了!
以上就是对重要细节的总结!
有一个最小数量的“默认”缓冲区,当你启动一个“屏幕”会话在你的“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.
我设置了~/。“defscrollback 123456789”,当我启动一个屏幕时,我的整个系统冻结了10分钟,然后才回到我能够杀死屏幕进程的点(到那时,它正在消耗16.6GB的VIRT mem)。