Lendo a saída de qualquer processo usando seu pid

20

É possível anexar um terminal a um processo já em execução usando o pid de maneira semelhante ao uso do comando fg para jobs.

    
por Tommy 25.09.2012 / 13:45

3 respostas

30

Você pode obter os descritores de arquivo padrão do processo, por exemplo, stdout :

tail -f /proc/<pid>/fd/1
    
por user23368 25.09.2012 / 17:52
7

Existem algumas opções aqui. Uma delas é redirecionar a saída do comando para um arquivo e, em seguida, usar 'tail' para visualizar novas linhas que são adicionadas a esse arquivo em tempo real.

Outra opção é lançar seu programa dentro de 'screen', que é uma espécie de aplicativo Terminal baseado em texto. Sessões de tela podem ser anexadas e desanexadas, mas são nominalmente destinadas apenas para serem usadas pelo mesmo usuário, então se você quiser compartilhá-las entre usuários

Caso você queira, você pode rastrear o processo e ver o que está fazendo com strace

$ strace -e trace=open -p 22254 -s 80 -o output.txt

  

-p PID: Anexe ao processo com o ID do processo pid e inicie o rastreio.

     

-s SIZE: Especifique o tamanho máximo da string para imprimir (o padrão é 32).

     

-o filename: Grave a saída do rastreio no nome do arquivo, e não na tela (stderr).

    
por user61928 25.09.2012 / 13:59
3

Você pode usar esses comandos abaixo para anexar um processo em execução em outro terminal:

  • retty (Página de manual: retty )
  • reptyr
  • screen

Exemplo:

screen -S PID
retty $(pgrep PID)
reptyr PID
    
por devav2 25.09.2012 / 14:19