这“屏幕”窗口管理器允许指定回滚缓冲区的所需大小。
例如,当开始新会话时:(来源)
‘-h num’ Set the history scrollback buffer to be num lines high. Equivalent to the defscrollback command (see Copy).
或者当已经在屏幕会话中时使用以下命令:(来源)
12.1.2 Scrollback — Command: defscrollback num Same as the scrollback command except that the default setting for new windows is changed. Defaults to 100. — Command: scrollback num Set the size of the scrollback buffer for the current window to num lines. The default scrollback is 100 lines. Use C-a i to view the current setting.
num
但我似乎找不到说明上述任何方法的最大值的文档。
那么问题是:如何确定屏幕实用程序的最大回滚长度?
答案1
我不确定在哪里可以找到它的记录,但是深入研究一下源代码可以找到一些线索。当您传入时,-h
它会设置histheight
(请参阅屏幕.c)。其中main
解析-h
如下:
case 'h':
if (--argc == 0)
exit_with_usage(myname, NULL, NULL);
nwin_options.histheight = atoi(*++argv);
if (nwin_options.histheight < 0)
exit_with_usage(myname, "-h: %s: negative scrollback size?", *argv);
break;
该nwin_options
结构是一个实例NewWindow
,定义在窗口.h:
struct NewWindow {
int StartAt; /* where to start the search for the slot */
char *aka; /* aka string */
char **args; /* argv vector */
char *dir; /* directory for chdir */
char *term; /* TERM to be set instead of "screen" */
bool aflag;
bool dynamicaka;
int flowflag;
int lflag;
int histheight;
int monitor;
int wlock; /* default writelock setting */
int silence;
bool wrap;
bool Lflag; /* logging */
int slow; /* inter character milliseconds */
int gr;
bool c1;
int bce;
int encoding;
char *hstatus;
char *charset;
int poll_zombie_timeout;
};
我们可以看到它是一个 int,所以大概您可以将其设置为有符号 int 的histheight
最大值。maxint
答案2
在尝试回答我自己的问题时,这是我通过反复试验在自己的系统上发现的:
答案:有一个硬限制(50,000,000 到 1,000,000,000 之间),但性能可能是你的瓶颈(因此我无法确定确切的硬限制)
我的实验包括:
在没有任何配置文件的情况下启动新的屏幕会话~/.screenrc
:
screen -a
ctrl在屏幕内按+打开屏幕命令提示符a,:然后输入命令:
scrollback 1000000
结果是消息:scrollback set to 1000000
(1,000,000)。
尝试scrollback 1000000000
(1,000,000,000) 很快就得到了消息scrollback set to 0
。我认为这意味着 1,000,000 被接受,而 1,000,000,000 太多了。
尝试scrollback
100000000` (100,000,000) 导致屏幕挂起。第二个终端会话和一些耐心之后我能够杀死屏幕。当再次尝试同样的事情时,这种行为被证明是一致的。
延迟 2 秒尝试scrollback 10000000
(10,000,000) 会产生消息scrollback set to 10000000
。
延迟 60 秒尝试scrollback 50000000
(50,000,000) 会产生消息scrollback set to 50000000
。