Como eu 'anexaria' uma visualização de console / terminal a uma saída de aplicativo para que eu possa ver o que ela está dizendo?
Como eu desanexaria a saída de um aplicativo sem encerrar o aplicativo?
Normalmente, se você iniciar um aplicativo falante usando a linha de comando, verá todos os tipos de resultados maravilhosos. No entanto, digamos que eu tenha uma programação particularmente falante em execução, como KINO, e desejo ver sua saída a qualquer momento, sem reiniciá-la por meio da linha de comando. Não posso; pelo menos não sei como.
linux
logging
command-line-interface
aggitano
fonte
fonte
Respostas:
Existem algumas opções aqui. Uma é redirecionar a saída do comando para um arquivo e, em seguida, usar 'tail' para ver as novas linhas que são adicionadas a esse arquivo em tempo real.
Outra opção é lançar seu programa dentro da 'tela', que é uma espécie de aplicativo de Terminal baseado em texto. As sessões de tela podem ser anexadas e desanexadas, mas, nominalmente, devem ser usadas apenas pelo mesmo usuário, então, se você quiser compartilhá-las entre os usuários, é um grande pé no saco.
fonte
Acho que tenho uma solução mais simples aqui. Procure um diretório cujo nome corresponda ao PID que você está procurando, no pseudo-sistema de arquivos acessível no
/proc
caminho. Portanto, se você tiver um programa em execução, cujo ID é 1199,cd
nele:Em seguida, procure o
fd
diretório abaixoEste
fd
diretório contém os objetos descritores de arquivo que seu programa está usando (0: stdin, 1: stdout, 2: stderr) e apenastail -f
o que você precisa - neste caso, stdout):fonte
tail
porque no meu caso a saída foi redirecionada para outro processo de entrada, masmore
me mostrou os dados atuais.more
está trabalhando para mim. ubuntu 14.04 em um processo de nóEu estava procurando exatamente a mesma coisa e descobri que você pode fazer:
Não é exatamente o que você precisava, mas está bem perto.
Tentei redirecionar a saída, mas não funcionou para mim. Talvez porque o processo estava gravando em um soquete, não sei.
fonte
Sobre essa questão, sei que é possível pegar a saída, mesmo quando você não executou o comando sceen antes de iniciar o processus.
Embora nunca tenha experimentado, encontrei um artigo interessante que explica como fazer usando GDB (e sem reiniciar o processo).
redirecionando-saída-de-um-processo em execução
Basicamente:
A propósito, se você está executando um sistema operacional Linux no i386, os comentários falam sobre uma ferramenta melhor para redirecionar a saída para um novo console: 'retty' . Em caso afirmativo, considere seu uso.
fonte
Para mim, isso funcionou:
Faça login como o proprietário do processo (mesmo sem
root
permissão)Tail o descritor de arquivo conforme mencionado em muitas outras respostas.
fonte
Eu queria assistir remotamente um processo de atualização do yum executado localmente, então, embora provavelmente houvesse maneiras mais eficientes de fazer isso, aqui está o que eu fiz:
Obviamente, você deseja usar vcsa2, vcsa3, etc., dependendo de qual terminal está sendo usado.
Contanto que minha janela de terminal tivesse a mesma largura do terminal em que o comando estava sendo executado, eu poderia ver um instantâneo de sua saída atual a cada dois segundos. Os outros comandos recomendados em outro lugar não funcionaram muito bem para minha situação, mas aquele funcionou.
fonte