Como não criar o arquivo nohup.out, mas manter a saída do terminal?

2

Se você redirecionar o aplicativo nohup como:

nohup bash -c "printf \"command\n\"" &> /dev/null

O arquivo nohup.out não é criado, no entanto, o terminal que executei o comando também não obtém nenhuma saída. Como manter a saída do terminal a partir do comando, mas não criar o arquivo nohup.out ?

    
por user 28.07.2017 / 06:24

2 respostas

2

Tente isso,

Para obter os STDOUT e STDERR no console e no arquivo nohup.out, execute o seguinte antes de executar o comando nohup .

exec >  >(awk '{ print $0; fflush();}' | tee -a nohup.out)
exec 2>  >(awk '{ print $0; fflush();}' | tee -a nohup.out >&2)
nohup bash -c "printf \"command\n\"" &

EDITAR:

Se você quiser que o nohup.out não seja criado, tente isso

exec >  >(awk '{ print $0; fflush();}')
exec 2>  >(awk '{ print $0; fflush();}')
nohup bash -c "printf \"command\n\"" &

Isso não criará o nohup.out durante a exibição de STDOUT e STDERR no console.

Coloque as linhas acima em um script e, em seguida, execute-o em segundo plano.

    
por 28.07.2017 / 09:17
1

Você pode executá-lo da seguinte forma

nohup process & tail -f nohup.out

Ou use o tee , que é útil para fazer exatamente o que você precisa: ler a partir da entrada padrão e gravar na saída e nos arquivos padrão

nohup process 1>&2 | tee nohup.out &

    
por 28.07.2017 / 11:23