GNU 화면: 분리된 세션을 표준 출력으로 인쇄합니다.

GNU 화면: 분리된 세션을 표준 출력으로 인쇄합니다.

screen나는 단지 내 독립형 GNU 세션 에 대한 간략한 개요를 제공하고 싶었을 뿐입니다 . 현재 내용을 stdout으로 덤프할 수 있습니까? 그것은 마치

screen --print SESSION_NAME > file.txt

답변1

세션의 한 창 덤프 화면을 사용하면 screen -X hardcopy /some/file현재 창의 화면 덤프를 /some/file.

다음 명령을 사용하여 특정 창을 덤프할 수 있습니다.

screen -X at 3 hardcopy /some/file

이 모든 것이 하나의 파일에 있습니다:

screen -X eval 'hardcopy_append on' 'at \\# hardcopy /some/file'

파일을 덤프할 디렉터리를 지정하여 창당 하나의 파일을 덤프할 수도 있습니다(지정하지 않으면 파일이 screen시작된 디렉터리에 덤프됩니다).

screen -X eval 'hardcopydir /some/dir' 'at \\# hardcopy'

(라는 이름의 파일에 덤프됩니다 hardcopy.<n>)

-h스크롤 버퍼 포함 옵션을 참조하세요 .hardcopy

평소와 같이 옵션을 screen사용하여 -S명령을 실행할 세션을 지정합니다. ⁣ ⁣ ⁣ ⁣

답변2

screen-L세션 로깅을 활성화하는 옵션 으로 시작하십시오.

screen또는 일단 실행되면 -를 사용하여 세션 내의 창에 대한 로깅을 켜거나 끌 수 있습니다 .screenCTRLaH

로그는 현재 작업 디렉터리에 생성되며 screenlog.XX는 고유 번호인 이름이 지정됩니다.

로깅이 활성화되면 창 목록의 출력이 L"플래그" 열에 표시됩니다 .

Num Name           Flags
  0 fedora         $(L)               
  1 sudo           $                                        
  2 fedora         $(L)                                                

답변3

명명된 파이프를 사용하면 제목(질문 아님)이 묻는 것처럼 표준 출력으로 출력할 수 있습니다.

function screen_peek()
{
  # Create a random filename
  local pipe="$(mktemp -u)"
  # Crete a named pipe
  mkfifo "${pipe}"
  # Runs hardcopy in background, wrt bash (the client)
  screen -S "${1}" -X hardcopy "${pipe}"
  # Redirect pipe to stdout and remove trailing and leading blank lines
  cat "${pipe}" | sed -e '/./,$!d' -e :a -e '/^\n*$/{$d;N;};/\n$/ba'
  # Cleanup
  rm -f "${pipe}"
}

catBash의 익명 파이프(및 coproc)는 파이프를 열어두기 때문에 화면 하드카피 덤프가 완료될 때 종료(EOF)를 발생시키지 않습니다. 익명 파이프 통신은 Python과 같은 다른 언어의 하위 수준 호출과 분리되어야 합니다.

관련 정보