[완료] Tee를 이런 용도로 사용할 수 있을까요?
큰 용량의 trace를 병렬 프로세스로 분석하고자 합니다.
이 경우, 3개의 프로세스를 돌리려니 각 프로세스가 디스크에서 각각 read를 해야 하더군요.
그래서 어떤 프로세스가 trace를 읽어 들여 파싱한 후 표준 출력해 주면 나머지 세 개의 프로세스들이 이 출력을 입력으로 받아서 작업을 하도록 하고 싶습니다.
이를 위해 tee를 쓰면 될 것 같은데, 대부분의 매뉴얼들이 tee의 간단한 사용법만 명시해 두어서 이렇게 사용할 수 있을지 잘 모르겠습니다.
우선 제가 생각하는 바를 간략히 서술해 보겠습니다.
* 각각의 프로세스가 실행 될 때는 다음과 같이 실행 됩니다.
cat big-traces.pcap | tcpdump --options | myScript.pl --option1
cat big-traces.pcap | tcpdump --options | myScript.pl --option2
cat big-traces.pcap | tcpdump --options | myScript.pl --option3
* tee를 이용하여 아래와 같이 할 수 있는지 궁금합니다.
cat big-traces.pcap | tcpdump --options | tee myScript.pl --option1 | tee myScript.pl --option2 | myScript.pl --option3
대충 위처럼 실행해 본 결과 프로세스가 돌기는 하는데 두 번째와 세번째 프로세스의 출력 파일이 항상 비어 있더군요.
꼭 tee가 아니더라도 위와 같은 실행을 가능케 하는 방법 좀 알려 주시면 감사드리겠습니다.
아, 자문 자답입니다.
아, 자문 자답입니다. 아래처럼 하니까 되는군요.
cat big-traces.pcap | tcpdump --options | tee >(myScript.pl --option1) | tee >(myScript.pl --option2) | myScript.pl --option3
댓글 달기