Basically, I want to background an application and have a file that I can tail for the output and another to redirect input to.
Se for esse o caso, então (1) precisamos fazer o background application
e enviar sua saída para o arquivo file
:
application >file &
E, (2) precisamos direcionar a saída do aplicativo para o comando another
:
tail -f | another
Exemplo
Vamos criar uma amostra application
e another
:
$ application() { while sleep 1; do date; done; }
$ another() { grep 2017; }
Agora, vamos começar com application
no plano de fundo:
$ application >file &
[1] 5989
E, vamos executar another
no primeiro plano:
$ tail -f file | another
Sat May 20 18:32:05 PDT 2017
Sat May 20 18:32:06 PDT 2017
Sat May 20 18:32:07 PDT 2017
Sat May 20 18:32:08 PDT 2017
Sat May 20 18:32:09 PDT 2017
Sat May 20 18:32:10 PDT 2017
[...clip...]
Dentro de uma sessão de tela usando um FIFO
Primeiro, inicie uma sessão de tela. Então corra:
$ mkfifo fifo
$ application >fifo &
[1] 8129
$ cat fifo | another
Sat May 20 18:50:39 PDT 2017
Sat May 20 18:50:40 PDT 2017
Sat May 20 18:50:41 PDT 2017
Sat May 20 18:50:42 PDT 2017
Sat May 20 18:50:43 PDT 2017
Sat May 20 18:50:44 PDT 2017
Sat May 20 18:50:45 PDT 2017
Sat May 20 18:50:46 PDT 2017
[...snip...]
(usei cat fifo | another
para sua paralização com a primeira versão tail -f
.
cat
é desnecessário aqui. Nós poderíamos ter usado another <fifo
.)