진행 상황 을 STDOUT
.STDOUT
grep
질문:프로세스를 중지하지 않고 다른 프로세스에 연결할 수 있는 방법이 있습니까 STDOUT
?
항상 OS X 10.7.3의 ZSH에 있는 GNU 화면에서 실행됩니다.
답변1
똑똑한 사람이 있어요해커언급하다여기GDB를 사용하여 프로세스에 연결하고 파일을dupx
이것이 이 기능을 요약한 것입니다.
~에서dupx
맨페이지:
Dupx는 실행 중인 프로그램의 파일을 다시 매핑하는 간단한 유틸리티입니다. Bash와 같은 셸에서는
>, < -
비슷한 구문을 사용하여 프로그램 시작 시 쉽게 입력/출력/오류 리디렉션을 허용합니다. 예:echo 'redirect this text' > /tmp/stdout
출력echo
을/tmp/stdout
.그러나 표준 셸은 시작된 프로세스에 대한 출력(또는 입력 또는 오류)을 다시 매핑(리디렉션)하는 기능을 제공하지 않습니다. Dupx는
dup(2)
내부 시스템 호출을 사용하여 이 문제를 해결하려고 시도합니다gdb(1)
. Dupx는 현재gdb
스크립트용 간단한 셸 래퍼로 구현되어 있습니다.
답변2
화면 log
명령(!)을 사용하세요.
프로세스가 이미 screen 세션에서 실행 중이므로 해당 창의 출력을 기록하도록 screen에 지시하면 됩니다.
스크립트 창으로 전환하여 C-a H녹음합니다.
이제 다음을 수행할 수 있습니다.
$ tail -f screenlog.2 | grep whatever
화면의 매뉴얼 페이지에서:
녹음[켜기|끄기]
현재 창의 출력을 창의 기본 디렉터리에 있는 "screenlog.n" 파일에 쓰기 시작/중지합니다. 여기서 n은 현재 창의 번호입니다. 이 파일 이름은 "logfile" 명령을 사용하여 변경할 수 있습니다. 인수가 제공되지 않으면 로깅 상태를 전환합니다. 파일이 이미 존재하는 경우 세션 로그는 파일의 이전 내용에 추가됩니다. 현재 내용과 롤백 기록 내용은 세션 로그에 포함되지 않습니다. 기본값은 "끄기"입니다.