Obtendo a saída de um processo em execução

1

Eu tenho um processo em execução em uma máquina Linux da qual gostaria de acessar a saída. Está em seu próprio contêiner que estou usando docker exec to su em. Com ps , posso ver:

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 18:45 ?        00:00:00 python ./manage.py runserver

Eu pensei que poderia fazer isso com

fg 1

mas isso não funcionou. Como posso capturar a saída desse processo já em execução?

    
por wogsland 29.03.2017 / 00:10

2 respostas

3

Use docker logs <yourcontainer> no host para ler sua stdout. Adicione --follow para manter a saída.

    
por 29.03.2017 / 00:19
0

Você pode somente fg um trabalho (ou processo) que você executou no terminal atual e foi suspenso (por exemplo, com Ctrl + Z ) e / ou enviado para ser executado em segundo plano (por exemplo, com bg ). As chances são extremamente improváveis de que o PID 1 esteja ligado ao terminal atual; geralmente está vinculando seus fluxos de entrada, saída e erro padrão a /dev/null . Você pode verificar com:

$ sudo ls -l /proc/1/fd/{0,1,2}
lrwx------ 1 root root 64 Mar 28 15:13 /proc/1/fd/0 -> /dev/null
lrwx------ 1 root root 64 Mar 28 15:13 /proc/1/fd/1 -> /dev/null
lrwx------ 1 root root 64 Mar 28 15:13 /proc/1/fd/2 -> /dev/null

Você só pode verificar os descritores de arquivo dos processos que possui, e é por isso que sudo é necessário aqui. Os papéis desses descritores são os seguintes para qualquer processo:

  • fd/0 - entrada padrão
  • fd/1 - saída padrão
  • fd/2 - erro padrão
por 29.03.2017 / 00:20