기존 쉘의 리디렉션/grep STDOUT

기존 쉘의 리디렉션/grep STDOUT

진행 상황 을 STDOUT.STDOUTgrep

질문:프로세스를 중지하지 않고 다른 프로세스에 연결할 수 있는 방법이 있습니까 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" 명령을 사용하여 변경할 수 있습니다. 인수가 제공되지 않으면 로깅 상태를 전환합니다. 파일이 이미 존재하는 경우 세션 로그는 파일의 이전 내용에 추가됩니다. 현재 내용과 롤백 기록 내용은 세션 로그에 포함되지 않습니다. 기본값은 "끄기"입니다.

관련 정보