"화면" 창 관리자의 최대 스크롤백 크기

"화면" 창 관리자의 최대 스크롤백 크기

이것"화면" 창 관리자스크롤백 버퍼의 원하는 크기를 지정할 수 있습니다.

예를 들어, 새 세션을 시작할 때: (원천)

‘-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(참조screen.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인스턴스입니다.NewWindowwindow.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라는 것을 알 수 있으므로 아마도 signed 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) 메시지입니다 .

(1,000,000,000)을 시도 scrollback 1000000000하고 메시지를 빠르게 받으세요 scrollback set to 0. 나는 이것이 1,000,000이 허용되고 1,000,000,000이 너무 많다는 것을 의미한다고 생각합니다.

100000000`(100,000,000)을 시도하면 scrollback화면이 정지됩니다. 두 번째 터미널 세션과 약간의 인내심 끝에 화면을 종료할 수 있었습니다. 이 동작은 동일한 작업을 다시 시도할 때 일관된 것으로 나타났습니다.

2초 지연 시도 scrollback 10000000(10,000,000)는 메시지를 생성합니다 scrollback set to 10000000.

60초 지연 시도 scrollback 50000000(50,000,000)는 메시지를 생성합니다 scrollback set to 50000000.

관련 정보