Como acompanhamento desta pergunta , eu gostaria de saber para onde o STDOUT e o STDERR de um programa no qual eu executei disown -h
são redirecionados.
Como acompanhamento desta pergunta , eu gostaria de saber para onde o STDOUT e o STDERR de um programa no qual eu executei disown -h
são redirecionados.
Respostas:
disown
não altera os programas STDOUT / ERR. Eles ainda irão para onde você os redirecionou (usando >
etc.). Se você não os redirecionou, eles continuarão entrando no terminal a partir do qual você iniciou o programa (até você fechar o terminal, caso em que serão descartados).
Para ilustrar, execute isso em um terminal:
bash -c 'while true; do sleep 1; echo hi; done' &
Isso imprimirá "oi" a cada segundo (e o incomodará terrivelmente ;-)). Se você disown
programar após o início, o "oi" continuará. Você precisa encontrar o PID do shell (usando, por exemplo, ps) e matá-lo para fazê-lo parar.
Editar:
Com base nos comentários, talvez o que você realmente queira fazer seja recuperar a saída do programa depois de disown
editá-lo e fechar o terminal em que estava sendo executado. Isso é explicado nesta pergunta: Nohup remoto após o fato com o tcsh ( graças ao quack quixote).