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
또는 일단 실행되면 -를 사용하여 세션 내의 창에 대한 로깅을 켜거나 끌 수 있습니다 .screen
CTRLaH
로그는 현재 작업 디렉터리에 생성되며 screenlog.X
X는 고유 번호인 이름이 지정됩니다.
로깅이 활성화되면 창 목록의 출력이 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}"
}
cat
Bash의 익명 파이프(및 coproc)는 파이프를 열어두기 때문에 화면 하드카피 덤프가 완료될 때 종료(EOF)를 발생시키지 않습니다. 익명 파이프 통신은 Python과 같은 다른 언어의 하위 수준 호출과 분리되어야 합니다.