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

1

Eu tenho um programa python que gera saída para stdout e um arquivo de log.

No entanto, a pessoa para quem estou fazendo isso quer saber se posso configurá-lo para que ele possa ver a saída do arquivo, enquanto ele está sendo executado em um terminal diferente ou em segundo plano. Por exemplo, o programa foi iniciado na inicialização e ele deseja ssh e vê a saída que está sendo executada.

Então, há uma maneira de ver a saída de um processo que está sendo executado atualmente?

De preferência em bash ou python, se possível.

    
por user3346931 29.06.2015 / 15:53

2 respostas

3

Eu vejo duas opções. Primeiro, ele pode usar tail -f para ver o arquivo de registro enquanto ele está sendo escrito, ou dois, ele pode ter o programa iniciado dentro de uma sessão screen (ou similar) para a qual ele pode (re) anexar posteriormente.

Se ele não souber o local do arquivo de log, ele poderá usar top , ps ou uma ferramenta semelhante para localizar o ID do processo e executar lsof -p1234 , em que 1234 é o ID do processo para listar arquivos abertos desse processo.

    
por 29.06.2015 / 15:56
1

Eu pessoalmente prefiro usar less para fazer a mesma coisa.

less your_file

Após iniciar less , o comando F (não um sinalizador de linha de comando) começará a monitorar ativamente o final do arquivo. Enquanto assiste ao final do arquivo neste modo CTRL - c irá parar de anexar a saída a less e permitir que você pague por aí. Muito útil.

    
por 29.06.2015 / 19:24