데이터 스트림을 나누었다가 하나의 파이프라인을 통해 다시 모우기.

mandugukbap의 이미지

제가 조금 까다로운 작업을 기획하고 있습니다.

일단은 다음과 같은 프로세스입니다.

cat data |\ tee proc1 proc2 |\ proc1 proc2 (출력스트림을 다시 합침) |\ final_process

Tee또는 Pee를 이용해 스트림을 복사하여 나누는 것 까지는 큰 문제가 없는데 이것을 각각 다른 프로세스에서 처리한 후 다시 하나의 프로세스로 보내는걸 어찌해야 할지 모르겠습니다.

이걸 구현할 방법이나 툴이 있을까요?

익명 사용자의 이미지

* 두 명령(프로세스)의 결과를 합치기를 해 보았습니다.
----------------
$ 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

대충 이렇게 나오는데 원하시는 것에 힌트라도 될런지 모르겠네요.

---
* 프로그램으로야 무조건 되겠지만 말입니다.

mandugukbap의 이미지

답변 감사드립니다. 힌트가 아니라 정답을 주신거 같아요.

제가, 두 개의 프로세스 (proc1, proc2) 들이 각각 파이프 라이닝을 해서 다른 프로세스로 출력 전달을 해야 한다고 생각을 했었네요.

생각해보니 두개의 프로세스들이 어차피 stdout으로 출력이 되겠군요. 특별히 합치지 않아도 출력은 stdout으로 될테니 두 출력을 구분할 수 있는 구분자만 두면 될것 같습니다.

우문에 현답을 내려주셨습니다. ^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.