Como obter stdout de uma sessão "perdida"

1

Eu não sei qual é o nome da situação, acho que ontem fechei uma sessão com um processo ipython em segundo plano, mas ainda consigo me conectar a ela (o processo está executando um servidor web e posso carregar a página). Ainda posso ver o stdout / stderr do processo?

Se eu correr ps -f -Umyname Eu recebo (eu deletei algumas linhas não relacionadas, mas o PID e o PPID são os reais):

UID        PID  PPID  C STIME TTY      STAT   TIME CMD
16131     1767  1765  0 11:20 ?        S      0:03 sshd: myname@notty
16131     1946 21019  0 11:25 ?        Sl     1:47 /usr/bin/python -m IPython.kernel -f /home/myname/.ipython/profile_default/security/kernel-c72091
16131     3946 21019  0 14:37 pts/3    Ss+    0:00 /bin/bash
16131     4003  4001  0 14:38 ?        S      0:01 sshd: myname@pts/14
16131     4004  4003  0 14:38 pts/14   Ss     0:00 -bash
16131     6366  4004  0 16:41 pts/14   R+     0:00 ps -f Umyname
16131    21019     1  0 Jul30 ?        Sl     0:52 /usr/bin/python ipython notebook 

Tenho certeza de que não está sendo executado dentro de uma tela. Qualquer ideia? Eu tenho interesse em PID 21019

laika
fonte

Respostas:

1

Você pode usar strace para ver a saída de um processo em execução.

$ strace -p 21019 -e write=1,2

O comando acima será anexado ao processo com PID 21019 e rastrear as chamadas de gravação para fd 1 (stdout) e 2 (stderr).

Quando estiver pronto, você pode enviar um sigint (para ajustar) para separar (pressione ctrl + c ).

editar: Existem também algumas ferramentas que permitem anexar um processo em execução a um novo terminal, por ex. reptyr , screenify, retty. Observe que a maioria deles usa strace, gdb ou ferramentas de rastreamento semelhantes para fazer isso, mas eles tendem a produzir uma saída mais bonita.

fredrikhl
fonte
Eu tenho anexar: ptrace (PTRACE_ATTACH, ...): Operação não permitida Não foi possível anexar ao processo. Se o seu uid corresponder ao uid do processo de destino, verifique a configuração de / proc / sys / kernel / yama / ptrace_scope ou tente novamente como usuário root. Para mais detalhes, veja /etc/sysctl.d/10-ptrace.conf Infelizmente eu não tenho acesso root neste sistema, mas obrigado pela sugestão
laika
strace não pode ser executado no docker github.com/moby/moby/issues/20064 Para desativar os recursos de segurança, use: docker run --security-opt seccomp:unconfined ...
Mithril