nohup
apenas redireciona a saída do comando se estiver indo para um terminal. Se a saída já estiver indo para outro tipo de arquivo (por exemplo, arquivo regular ou um canal), nohup
assume que isso é desejado e não redireciona para nohup.out
.
Por padrão, docker run
executa o comando por meio de um soquete (conectando o host ao ambiente virtual - é assim que eles se comunicam). Um soquete não é um terminal, então nohup
não realiza nenhum redirecionamento.
Se você executar docker run -t
, o Docker emulará um terminal no contêiner e, portanto, nohup
redirecionará para nohup.out
. Se você não passar um nome de comando, o docker funcionará como se você tivesse usado docker run -t bash
.
A melhor solução é redirecionar explicitamente a saída do comando para a sua escolha de arquivo de log. Não se esqueça de redirecionar o stderr também. Dessa forma, você saberá onde eles estão indo.
nohup awk 'BEGIN { while (c++<50) print "y" }' >myscript.log 2>&1 &