Cria buffer de entrada / saída STD para um programa em execução em uma sessão de tela

0

Ambiente

Linux version 2.6
Screen version 4.03.01

Estou executando um aplicativo dentro de uma sessão de tela. O programa imprime em STDOUT e lê a partir de STDIN.

O que eu gostaria de fazer:

Primeiro, tenha STDOUT do screen tee 'd em um arquivo. Por alguma razão, a tubulação para tee apenas grava as primeiras poucas linhas e depois para. Isso talvez porque o script de shell que estou executando executa outros scripts de aplicativos / shell ... Existe uma maneira de se conectar ao STDOUT da sessão de tela?

Em segundo lugar, eu gostaria de criar um arquivo, como um fifo talvez ?, que eu possa gravar dados e enviar esses dados para o STDIN da sessão de tela.

Estou aberto a outras sugestões, como não usar screen e fazer algo com nohup e fifo 's

Basicamente, eu quero colocar em segundo plano um aplicativo e ter um arquivo que eu possa seguir para a saída e outro para redirecionar a entrada.

    
por varlogtim 21.05.2017 / 01:07

1 resposta

0

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 .)

    
por 21.05.2017 / 03:34