Existe uma maneira de redirecionar a saída do nohup para um arquivo de log diferente de nohup.out?

113

Eu frequentemente uso o programa nohuppara que meus processos sejam imunes a interrupções. Então, se eu quiser tornar o programa programimune a interrupções, eu uso o comando

nohup program &

onde &coloca o processo em segundo plano.

Ao iniciar, nohupme passa a mensagem:

nohup: anexando a saída ao `nohup.out '

Existe alguma maneira de enviar a saída para um arquivo diferente de nohup.out? Muitas vezes, eu quero executar muitos processos no mesmo diretório usando nohup, mas se eu fizer isso, toda a saída será agrupada em um único nohup.outarquivo.

A página do manual (por exemplo, aqui ) não parece ter uma opção para especificar o arquivo de log. Você pode confirmar isso? Além disso, você tem alguma idéia de como posso solucionar esse problema?

Andrew
fonte
3
Um ano atrasado, mas uma boa resposta abrangente foi dada aqui: stackoverflow.com/questions/4549489/…
Rahul Jha

Respostas:

133

A nohuppágina do manual GNU coreutils indica que você pode usar o redirecionamento normal:

Se a entrada padrão for um terminal, redirecione-o de / dev / null. Se a saída padrão for um terminal, acrescente a saída a 'nohup.out', se possível, '$ HOME / nohup.out', caso contrário. Se o erro padrão for um terminal, redirecione-o para a saída padrão. Para salvar a saída em FILE, use 'nohup COMMAND> FILE'.

Editar: não li o seu link primeiro; você pode ter uma versão diferente de nohup, embora esta seção sugira que você ainda possa usar o redirecionamento normal:

 nohup.out          The output file of the nohup execution if
                    standard  output is a terminal and if the
                    current directory is writable.

Você pode redirecionar a saída padrão e o erro padrão para arquivos diferentes:

nohup myprogram > myprogram.out 2> myprogram.err

ou para o mesmo arquivo:

nohup myprogram > myprogram.out 2>&1
lk-
fonte
54
Para responder especificamente: use nohup program > program.out &para escrever a saída em program.outvez denohup.out
Jim Paris
4
E isso não é específico para os utilitários GNU, o comportamento é especificado pelo POSIX.
Gilles
3
Não parece funcionar. Ele redireciona a saída do comando nohup, e não a saída do myprogram.
Kris
2
@Kris redirecionamento deve ocorrer antes da fuga &personagem
yunzen