GNU screen을 사용하여 직렬 콘솔을 통해 분리 모드에서 단일 명령을 실행하고 해당 출력을 screen이 실행 중인 호스트의 로그 파일에 저장하고 싶습니다. 기본적으로 다음과 같은 비대화형에 해당합니다.
screen /dev/ttyUSB0 115200 # connect to serial console "/dev/ttyUSB0" using speed "115200"
ctrl+a H # start logging
some command
ctrl+a k y # quit
현재 셸에서 분리 모드로 단일 명령을 실행하는 방법을 알고 있습니다.
screen -d -m -L some command
# output is saved to screenlog.0
하지만 직렬 콘솔에 연결되어 있는 동안 동일한 작업을 수행하는 방법을 이해할 수 없습니다.
답변1
직렬 포트에서는 제대로 테스트할 수 없지만 다음과 같이 하면 작동할 수 있을 것 같습니다.
$ screen -S serial -L -d -m /dev/ttyUSB0
$ screen -S serial -X stuff 'some command\n'
내 버전은 로그 파일의 이름인 screen
매개변수를 허용합니다 . -L
분명히 모든 버전에 해당되는 것은 아닙니다. 로그 파일 이름을 설정하는 또 다른 방법은 (가능한 경우)을 사용하는 것입니다. 쓰기 전에 일정 기간 동안 출력을 버퍼링합니다. 기본 시간 초과는 10초이지만screen -S serial -X logfile filename
screen
logfile flush NN
이것 좀 바꿔 봐.
-X
실행중인 것에 명령을 보내고 screen
,stuff
현재 창의 입력으로 주어진 문자열을 "채웁니다".