/dev/null로 파이프된 출력을 살펴보세요.

/dev/null로 파이프된 출력을 살펴보세요.

몇 분에서 며칠까지 실행할 수 있는 몇 가지 과학 프로그램이 있습니다. 프로그램은 캐리지 리턴으로 끝나는 진행 정보를 stdout에 인쇄합니다.

프로그램이 며칠 동안 실행되는 경우 대용량 로그 파일을 피하기 위해 일반적으로 출력을 /dev/null로 파이프합니다.

생성된 모든 텍스트를 유지하지 않고 프로그램의 출력을 주기적으로 관찰할 수 있는 방법이 있습니까?

답변1

screen세션을 시작하려면 서버에 ssh를 실행하고 실행해야 합니다 . 거기에서 장기 실행 과학 프로그램을 시작한 다음(일반적으로 표준 출력으로 출력) 언제든지 연결을 끊습니다. 출력을 보고 싶을 때마다 ssh를 다시 서버로 돌아가서 실행하여 screen -R마지막으로 분리된 세션에 다시 연결하세요.

비슷하게 작동하는 tmux대신 을 사용할 수도 있습니다 . 대신 screen실행해 보세요 .tmux attach-sessionscreen -R

과학 프로그램 인스턴스에도 동일한 작업을 수행하세요.아니요스크린 세션에서 시작됨: 프로그램 PID를 찾은 후 다음을 실행하십시오.

screen
reptyr <PID>

새로운 스크린 세션에 다시 연결하세요.

답변2

저는 바로 이 문제 영역에서 새로운 솔루션을 개발했습니다.pw(파이프라인 모니터링) 유틸리티.

이것은 단일 파일에 2000줄 미만의 라인이 있고 라이브러리 종속성이 없는 작은 BSD 라이센스 C 프로그램이며 메모리 공간이 작은 작은 실행 파일을 생성합니다.

pw표준 입력에서 지속적으로 읽기 때문에 /dev/null.

pw쉘 작업 제어에 의해 백그라운드로 전환된 것을 감지 하면 여전히 입력을 읽지만 디스플레이를 새로 고치지는 않습니다.

정말 간단합니다.

yourlongrunningprogram | pw &

그런 다음 fg포그라운드로 이동하여 최신 출력을 확인 하고 Ctrl다시 백그라운드에서 실행하세요.Zbg

pw필터링, 트리거링, 분할 화면 작동, 스냅샷 기록 불러오기 등 몇 가지 멋진 대화형 기능이 있습니다. 사용자 인터페이스는 Vi meme입니다. :콜론 명령 등이 있습니다. 일부 명령에는 숫자 접두사가 있으며 반복되는 명령은 로 완성됩니다 ..

몇 시간 또는 며칠 동안 프로그램을 실행했는데 출력의 일부가 유익하지 않다고 판단했다고 가정해 보겠습니다. 문제 없습니다. :v pattern일치하지 않는 행은 pattern이제 거부됩니다.

최근 개발된 기능은 상태를 pw파일에 저장할 수 있다는 것입니다. 어떤 방식으로든 대화형으로 설정하면 저장된 파일에서 해당 설정(모든 필터, 트리거, 분할 화면 구성 및 기타 매개변수)을 쉽게 재현할 수 있습니다.

관련 정보