원격 명령 실행을 유지하고 출력을 저장합니다.

원격 명령 실행을 유지하고 출력을 저장합니다.

상상하다;

컴퓨터에 SSH를 연결하고 새 화면 세션을 열고 스크립트를 시작했습니다.

며칠 후 SSH를 통해 다시 머신에 연결하고 스크린 세션에 다시 연결하여 생성된 출력을 확인했습니다. 출력을 뒤로 스크롤할 수 없었습니다.

내가 아는 한, screen은 stdout 출력의 "화면 크기"를 저장합니다. 내 스크립트가 48시간 안에 100줄의 출력을 생성하는 경우 모든 내용을 볼 수 없고 마지막 40줄 정도만 볼 수 있습니다. screen계속 실행 중인 스크립트가 모든 stdout을 저장하여 로컬 컴퓨터에서 실행되는 스크립트인 것처럼 화면과 PgUp/PgDn을 다시 연결할 수 있는 방법이 있습니까 ?

어쩌면 screen이것이 최선의 방법이 아닐 수도 있다. 로그아웃한 후 원격 시스템에서 스크립트를 실행하고 나중에 프로세스에 다시 연결하여 모든 출력을 볼 수 있는 더 좋은 방법이 있습니까?

답변1

출력을 파일에 간단히 저장할 수 있습니다

my_command > mylogfile

명령이 실행될 때 어떤 일이 발생하는지 확인하려면 tail두 번째 화면에서 다음을 사용할 수 있습니다.

tail -f mylogfile

전체 출력물을 볼 수 있을 뿐만 아니라 처리할 수도 있습니다(비교, 검색...)

편집하다사용을 원하지 않으시면 screen언제든지 사용하시고 nohup세션을 닫으시면 됩니다.

nohup my_command > mylogfile &

답변2

다음과 같이 화면을 시작할 때 -L 매개변수를 사용하여 출력 로깅을 켤 수도 있습니다.

screen -L -S <screen_name>

그러면 위 명령으로 screen을 시작한 디렉터리에 screenlog.0이라는 로그 파일이 생성됩니다.

screenlog.0을 보려면 cat(vi가 아님)을 사용하십시오.참고자료.

cat screenlog.0

답변3

Screen은 과거 출력 행의 로그를 유지합니다. 화면 문서에서는 이를 "스크롤백 기록 버퍼"라고 합니다.

탐색을 뒤로 스크롤하려면 C-a ESC(copy). 화살표와 PgUp/ PgDn키를 사용하여 탐색할 수 있습니다.기타 키텍스트를 검색하고 복사하세요. ESC롤백/복사 모드를 종료하려면 이 키를 누르세요 .

기본적으로 Screen은 100행의 값만 유지합니다. 하나 넣어defscrollback귀하의 지시에 따라 .screenrc이 번호가 변경됩니다.

스크립트의 전체 로그를 원하면 파일에 저장하세요. 상위 셸에 다시 연결하고 스크립트가 여전히 실행 중인지, 중단되고 다시 시작되는지 등을 쉽게 확인할 수 있도록 화면 내에서 실행하세요. 아니면 포크로 하세요그리고nohup. 로그 파일이 늘어나는 것을 모니터링하려면 tail -f.

답변4

화면에서 출력을 보고 기록하려면 tee로그 이름에 매개변수로 파이프하면 됩니다.

관련 정보