Vendo a saída de um programa já em execução?

3

Quando inicio o programa no terminal, vejo a saída. Eu posso Ctrl + C minha saída para usar o terminal novamente, mas existe uma maneira de obter a saída dele no terminal novamente?

Estou ciente de que posso direcionar a saída para um arquivo e ler isso, mas seria bom tê-lo novamente na tela para teste.

    
por ThriceGood 16.09.2015 / 15:48

2 respostas

1

Pressionar Ctrl + C envia um sinal SIGINT para o processo em execução no primeiro plano do terminal, finalizando-o a menos que o processo ignore deliberadamente os sinais SIGINT;

Então pressionando Ctrl + C você está dizendo que o processo em execução no primeiro plano do terminal termine.

Para executar um processo que o impede de ocupar o terminal, você pode iniciá-lo em segundo plano adicionando & no final do comando:

user@user-X550CL:~/tmp$ bash script.sh &
[1] 24961
user@user-X550CL:~/tmp$ 

Se você já iniciou um processo em primeiro plano, ainda é possível pará-lo pressionando Ctrl + Z :

user@user-X550CL:~/tmp$ bash script.sh
^Z
[1]+  Stopped                 bash script.sh
user@user-X550CL:~/tmp$ 

Envie-o para o segundo plano e retome sua execução usando o bg incorporado:

user@user-X550CL:~/tmp$ bg
[1]+ bash script.sh &
user@user-X550CL:~/tmp$ 

Você pode enviar vários processos para o segundo plano:

user@user-X550CL:~/tmp$ bash script.sh &
[1] 24961
user@user-X550CL:~/tmp$ bash script.sh &
[2] 24984
user@user-X550CL:~/tmp$ bash script.sh &
[3] 24989
user@user-X550CL:~/tmp$ 

Você pode listar todos os processos em segundo plano usando o jobs embutido:

user@user-X550CL:~/tmp$ jobs
[1]   Running                 bash script.sh &
[2]-  Running                 bash script.sh &
[3]+  Running                 bash script.sh &
user@user-X550CL:~/tmp$ 

Para mover um processo do segundo plano para o primeiro plano, você pode usar o fg incorporado passando o número do trabalho como um argumento:

user@user-X550CL:~/tmp$ fg %1
bash script.sh

A execução de fg sem especificar um número de trabalho como um argumento terá o efeito de mover para o primeiro plano o último processo em segundo plano:

user@user-X550CL:~/tmp$ fg
bash script.sh
    
por kos 16.09.2015 / 16:42
2

Inicie seu aplicativo ou comando via

command &

e não use Ctrl - C . Você verá a saída até fechar o terminal.

Coloque o comando de volta em primeiro plano com

fg

Exemplo

Crie um script simples, por exemplo,

#!/bin/bash
while true; do
    echo foo
    sleep 5
done

Inicie o script, o programa emitirá a palavra foo . Depois de algum tempo entrei com echo bar , seguido por fg e Ctrl - C para finalizar o script.

$ ./foo &
[1] 29544
$ foo
foo
foo
echo bar
bar
$ foo
foo
fg
[1]  + 29544 running    ./foo
foo
^C
    
por A.B. 16.09.2015 / 15:50