Como posso receber a saída de dois ou mais processos independentes em um terceiro local sem afetar os dois processos?
Eu tenho dois processos, A e B, cada um rodando em seu próprio screen
, continuamente produzindo coisas.
Posso executar screen
e anexar a A para ver sua saída:
12:00 Foo.
12:02 Foo.
12:04 Foo.
Mesmo com B:
12:01 Bar.
12:03 Bar.
12:05 Bar.
E eu posso combinar várias telas para ver lado a lado ou algo semelhante.
Mas estou procurando uma maneira de ver a saída desses dois processos combinados em um "fluxo" de mensagens:
12:00 Foo.
12:01 Bar.
12:02 Foo.
12:03 Bar.
12:04 Foo.
12:05 Bar.
Embora também não seja capaz de enviar inadvertidamente algo como CTRL + C para um dos processos. (Eu ainda quero poder me reconectar aos processos e interagir com eles de tempos em tempos, e é por isso que tenho usado screen
.)
Assim, não acho que eu gostaria de executar os dois processos juntos e examinar a saída diretamente.
Eu poderia usar strace
para fazer algo assim:
strace -PIDofA -e write &
strace -PIDofB -e write &
Mas a saída não é muito bonita:
write(1, "12:00 Foo.", 10) = 10
write(5, "Foo in file.", 12) = 12
write(1, "12:01 Bar.", 10) = 10
write(5, "Bar in file.", 12) = 12
...
e não parece ser uma boa solução executar vários strace
desta forma para obter a saída combinada.
Talvez eu possa fazer os dois processos gravar em um arquivo e fazer algo como:
tail -f output.txt
Mas não tenho certeza se isso causará problemas quando o arquivo for preenchido com mais e mais linhas de saída.
E não sei ao certo o que acontece quando dois processos tentam gravar no mesmo arquivo ao mesmo tempo.
Então, que ferramenta eu uso ou como faço para redesenhar meus processos para exibir a saída de A e B juntos?
(Eu estou rodando isso no Debian e acessando através do ssh, se isso faz diferença.)