É possível deixar um processo iniciado com nohup, gravar em stdout em vez de em um arquivo? ou talvez no arquivo e na tela?
nohup python start.py &
escreve para nohup.out
, mas eu gostaria que fosse exibido na tela, nohup é apenas um hedge quando a conexão é interrompida.
Respostas:
nohup python start.py & tail -f nohup.out
Otail -f
pode ser morto e reiniciado à vontade.screen python start.py
e desconectar / reconectar à vontade.fonte
De
man nohup
:(completamente revisado com base nos comentários)
Ao sair de um shell ou fechar um terminal, os processos filhos serão enviados ao SIGHUP (hangup, o nome se origina do momento em que os terminais discariam no computador UNIX) para informar que o terminal não está funcionando. mais conectado. Além disso, quando o processo do shell terminar, os fluxos stdin, stdout e stderr do processo filho serão fechados. Normalmente, isso faz com que o processo filho morra. Normalmente, isso é uma coisa boa, pois evita deixar processos em execução sem usuário.
O objetivo do
nohup
programa é manter o processo em execução, mesmo após o shell terminar e o terminal desconectar. Como tal, direcionar sua saída para o terminal anula completamente o objetivo. Minha resposta original (nohup COMMAND | cat
) não foi útil porque: quando o terminal está fechado, a saída do gato é fechada e o gato morre, quebrando o tubo e enviando um SIGPIPE ao processo de nohup, causando a sua morte. Eu respondi a pergunta sem pensar no propósito.Para atingir seu objetivo, execute
nohup COMMAND > FILE
para selecionar o nome do arquivo para o qual direcionar a saída. Em seguida, usetail -f FILE
para assistir a saída em um terminal.Da mesma forma, pode-se usar a seguinte construção de shell:
COMMAND >FILE 2>&1 </dev/null &
para executar um comando cujos fluxos stdio não estão conectados ao terminal e podem continuar em execução após o fechamento do terminal. Além disso, no zsh, execute o shell-builtindisown
para dizer ao zsh para deixar o processo em vez de matá-lo quando o shell terminar.fonte
tail -f filename
para ver o que está gravado no arquivo.fonte