'screen'내부의 출력을 스크립트로 가져 오는 방법은 무엇입니까?


32

나는이 screen인스턴스 실행하고, 나는 내부의 코드를 실행해야합니다 screen, 내 스크립트에 결과를 얻을.

첫 번째 부분은 아주 쉽습니다 screen -S session_name -X eval 'stuff "$cmd"\015'.
( 스크립트에서 찾은 줄을 수정 했습니다 )

출력을 얻는 두 번째 부분은 더 까다 롭습니다. 크기에 관계없이 전체 출력을 얻는 방법은 무엇입니까?



고마워 :) 두 번째 링크는 왜 첫 번째 명령이되어야하는지 설명 stuff되었는데, 이것이 내가 이해하기 어려웠습니다.
1ace

답변:


29

당신은 시작할 수 screen-L옵션을 선택합니다. 이로 인해 screen screenlog.n은 현재 작업 디렉토리에 파일을 생성합니다 (n 부분은 0으로 시작).

귀하의 경우 이것은 다음과 같습니다. screen -S session_name -L -X eval 'stuff "$cmd"\015'

나중에 정리하는 것을 기억하는 한, 이것은 당신이 추구하는 것과 일치해야합니다.

로그의 마지막 줄에 대해로 쉽게 얻을 수 tail -1 screenlog.0있거나 원하는대로 전체 로그를 파싱 할 수 있습니다.


그러나 한 가지 : screen내가 준 명령 은 명령을 보내는 것입니다.를 시작하기 screen위해 screen -dmS name program;-)를 사용했습니다 .
1ace

22

나중에 도움이 될 수있는 또 하나의 뉘앙스 : 스크린 세션에있는 경우 대화식으로 로그 파일을 만들도록 요청할 수 있습니다. 눌러 ctrl- a H당신이 로그 파일에있어 어떤 창 덤핑 시작 화면을 물어 (제어-A는 자본 H 다음).


5
그것이 최신 버전인지 아닌지는 모르겠지만 man screenH에 대한 통제없이 CA H를 입력해야합니다. 슬픈만이 이전 로그를 캡처하지 않습니다.
Matmarbon

2
네가 옳아! 로그 파일을 생성하는 것은 CA H입니다. 대문자 H입니다 (소문자 h는 현재 화면의 하드 카피 만 생성 함).
rickumali

3
답변을 CA H로 업데이트하십시오. 미래의 검색 자들은 잘못 인도되어 정답을 놓칠 수 있습니다.
gc5

누구나 스크립트를 통해 명령을 보내는 방법을 알고 있습니까? 송신 제어 + a에서와 같이 스플릿 초 후에 H.
Zach W.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.