데이터 스트림을 나누었다가 하나의 파이프라인을 통해 다시 모우기.
글쓴이: mandugukbap / 작성시간: 목, 2015/12/17 - 10:56오후
제가 조금 까다로운 작업을 기획하고 있습니다.
일단은 다음과 같은 프로세스입니다.
cat data |\ tee proc1 proc2 |\ proc1 proc2 (출력스트림을 다시 합침) |\ final_process
Tee또는 Pee를 이용해 스트림을 복사하여 나누는 것 까지는 큰 문제가 없는데 이것을 각각 다른 프로세스에서 처리한 후 다시 하나의 프로세스로 보내는걸 어찌해야 할지 모르겠습니다.
이걸 구현할 방법이나 툴이 있을까요?
Forums:
* 두 명령(프로세스)의 결과를 합치기를 해
* 두 명령(프로세스)의 결과를 합치기를 해 보았습니다.
----------------
$ mkdir -p ./x/x ./x/y
$ ls -l <--- 첫번째 명령
total 24
-rwxrwxr-x 1 XXXX XXXX 13552 12월 18 10:06 test
-rw-rw-r-- 1 XXXX XXXX 3845 12월 18 10:06 test.c
drwxrwxr-x 4 XXXX XXXX 4096 12월 18 10:34 x
$ ls -l x <-- 두번째 명령
total 8
drwxrwxr-x 2 XXXX XXXX 4096 12월 18 10:34 x
drwxrwxr-x 2 XXXX XXXX 4096 12월 18 10:34 y
$ { ls -l & ls -l x; } <--- 두 명령을 실행하고 결과를 Merge
[1] 16394
total 24
total 8
drwxrwxr-x 2 XXXX XXXX 4096 12월 18 10:34 x
drwxrwxr-x 2 XXXX XXXX 4096 12월 18 10:34 y
$ -rwxrwxr-x 1 XXXX XXXX 13552 12월 18 10:06 test
-rw-rw-r-- 1 XXXX XXXX 3845 12월 18 10:06 test.c
drwxrwxr-x 4 XXXX XXXX 4096 12월 18 10:34 x
[1]+ Done ls --color=auto -l
$ { ls -l & ls -l x; } > out <----- 출력을 리다이렉션해서 보기로 함
[1] 16396
$ more out <---- 출력보기
total 8
drwxrwxr-x 2 XXXX XXXX 4096 12월 18 10:34 x
drwxrwxr-x 2 XXXX XXXX 4096 12월 18 10:34 y
total 28
-rw-rw-r-- 1 XXXX XXXX 98 12월 18 10:36 out
-rwxrwxr-x 1 XXXX XXXX 13552 12월 18 10:06 test
-rw-rw-r-- 1 XXXX XXXX 3845 12월 18 10:06 test.c
drwxrwxr-x 4 XXXX XXXX 4096 12월 18 10:34 x
[1]+ Done ls --color=auto -l
----------
* 그런데, stderr을 분리해서 보는게 좋겠음
$ { ls -l & ls -l x; } > out 2>err <------ stdout은 out으로 출력하고, stderr은 err로 출력하게 함
$ more err
[1] 16400
[1]+ Done ls --color=auto -l
$ more out
total 8
drwxrwxr-x 2 XXXX XXXX 4096 12월 18 10:34 x
drwxrwxr-x 2 XXXX XXXX 4096 12월 18 10:34 y
total 32
-rw-rw-r-- 1 XXXX XXXX 10 12월 18 10:36 err
-rw-rw-r-- 1 XXXX XXXX 98 12월 18 10:36 out
-rwxrwxr-x 1 XXXX XXXX 13552 12월 18 10:06 test
-rw-rw-r-- 1 XXXX XXXX 3845 12월 18 10:06 test.c
drwxrwxr-x 4 XXXX XXXX 4096 12월 18 10:34 x
대충 이렇게 나오는데 원하시는 것에 힌트라도 될런지 모르겠네요.
---
* 프로그램으로야 무조건 되겠지만 말입니다.
답변 감사드립니다. 힌트가 아니라 정답을 주신거
답변 감사드립니다. 힌트가 아니라 정답을 주신거 같아요.
제가, 두 개의 프로세스 (proc1, proc2) 들이 각각 파이프 라이닝을 해서 다른 프로세스로 출력 전달을 해야 한다고 생각을 했었네요.
생각해보니 두개의 프로세스들이 어차피 stdout으로 출력이 되겠군요. 특별히 합치지 않아도 출력은 stdout으로 될테니 두 출력을 구분할 수 있는 구분자만 두면 될것 같습니다.
우문에 현답을 내려주셨습니다. ^^
댓글 달기