screenlogging - 대화형 쉘 제어 문자와 프롬프트를 생략하는 방법은 무엇입니까?

screenlogging - 대화형 쉘 제어 문자와 프롬프트를 생략하는 방법은 무엇입니까?

내 첫 번째 질문 중 하나입니다. 추가 설명이나 정보가 필요하거나 질문이 여기에 있어야 하는 내용과 다른 경우 댓글을 남겨주세요.

나는 서버(이 예에서는 마인크래프트 서버)를 자동으로 시작하기 위해 screen을 사용하고 있습니다.

나는 다음과 같은 화면을 생성하고 있습니다.

screen -S 'server_1' -d -m "java -Xmx4G -Xms4G -jar spigot.jar"

그런 다음 로그 파일을 설정하고 다음을 사용하여 로깅을 활성화합니다.

screen -S 'server_1' -X logfile /srv/serverinstalls/1/stdout.txt
screen -S 'server_1' -X log

그런 다음 NodeJS를 통해 stdout.txt의 내용을 읽습니다.

"cat stdout.txt"의 출력은 괜찮아 보이지만 "less stdout.txt"가 포함된 파일을 보면 모든 줄이 다음으로 시작됩니다.

>ESC[2K^M

여기서 ^M과 ESC는 제어 문자입니다(^M은 \r 문자입니다). 이것은 서버가 제공하는 대화형 셸의 프롬프트('>'로 시작)를 화면에 기록하는 방식인 것 같습니다.

해당 제어 문자를 생략하고 셸의 대화형 부분을 기록하지 않도록 화면 명령을 구성할 수 있는 방법이 있습니까?

필요한 경우 로그 파일을 읽을 때마다 추가 명령을 실행하거나 NodeJS를 사용하여 원치 않는 문자를 바꿀 수 있지만 프롬프트가 모든 서버에서 동일하게 표시되는 것은 아닙니다.

저는 화면 4.05.00의 Debian 9.9(stretch)에서 실행 중입니다.

답변1

아래 사람을 시도해 보셨나요?

ansifilter
less -r
strings

관련 정보