
대본;
컴퓨터에 SSH를 연결하고 새 화면 세션을 열고 스크립트를 실행했습니다.
며칠 후 SSH를 통해 해당 머신에 다시 연결하고 screen 세션을 다시 연결한 후 생성된 출력을 살펴봅니다. 출력을 뒤로 스크롤할 수 없습니다.
내가 볼 수 있듯이 screen은 stdout 출력의 "화면 가치" 하나를 저장합니다. 내 스크립트가 48시간 동안 100줄의 출력을 생성했다면 모든 내용을 볼 수는 없고 마지막 40줄 정도만 볼 수 있습니다. screen
실행 중인 스크립트에서 모든 표준 출력을 저장하여 로컬 컴퓨터에서 실행되는 스크립트인 것처럼 화면과 PgUp/PgDn을 다시 연결할 수 있는 방법이 있습니까 ?
아마도 screen
이 작업을 수행하는 가장 최적의 방법이 아닐까요? 로그아웃 후 원격 컴퓨터에서 스크립트를 실행 중인 상태로 두고 나중에 해당 프로세스에 다시 연결하여 모든 출력을 볼 수 있는 더 좋은 방법이 있습니까?
답변1
출력을 파일에 간단히 저장할 수 있습니다
my_command > mylogfile
명령이 실행되는 동안 무슨 일이 일어나고 있는지 보려면 tail
두 번째 화면에서 다음을 사용할 수 있습니다.
tail -f mylogfile
전체 출력을 볼 수 있을 뿐만 아니라 처리(비교, 검색 등)도 할 수 있습니다.
편집하다사용하고 싶지 않다면 screen
언제든지 nohup
세션을 사용하고 닫을 수 있습니다.
nohup my_command > mylogfile &
답변2
다음을 통해 화면을 시작할 때 매개변수 -L을 사용하여 출력 로깅을 켤 수도 있습니다.
screen -L -S <screen_name>
그러면 위 명령으로 화면을 시작한 디렉터리에 screenlog.0이라는 로그 파일이 생성됩니다.
screenlog.0을 보려면 cat(vi가 아님)을 사용하십시오.SO 참조.
cat screenlog.0
답변3
화면은 과거 출력 라인의 로그를 유지합니다. Screen 문서에서는 "스크롤백 기록 버퍼"라고 합니다.
스크롤백을 탐색하려면 C-a ESC
(copy
). 화살표와 PgUp/ PgDn키를 사용하여 탐색할 수 있습니다.다른 키텍스트를 검색하고 복사합니다. ESC
스크롤백/복사 모드를 종료하려면 누릅니다 .
기본적으로 Screen은 100줄 분량만 유지합니다. 넣어defscrollback
이 수치를 변경하라는 지시가 있습니다 .screenrc
.
스크립트의 전체 로그를 원하면 파일에 저장하세요. 상위 셸에 다시 연결하고 스크립트가 아직 실행 중인지 쉽게 확인하고 일시 중지했다가 다시 시작하는 등의 작업을 수행하려면 Screen 내에서 실행하세요. 또는 포크로 실행하세요.~와 함께nohup
. 로그 파일이 증가하는 동안 이를 모니터링하려면 tail -f
.
답변4
화면에서 출력을 보고 로그도 기록하려면 tee
로그 이름을 매개변수로 사용하여 파이프하면 됩니다.