C'è un modo per reindirizzare l'output di nohup su un file di registro diverso da nohup.out?


113

Uso frequentemente il programma in nohupmodo che i miei processi siano immuni da problemi. Quindi, se voglio rendere il programma programimmune ai blocchi, uso il comando

nohup program &

dove &mette il processo in background.

All'inizio, nohupmi dà il messaggio:

nohup: aggiunta dell'output a `nohup.out '

Esiste un modo per inviare l'output a un file diverso da nohup.out? Spesso voglio eseguire molti processi nella stessa directory usando nohup, ma se lo faccio, tutto l'output viene raggruppato in un unico nohup.outfile.

La pagina del manuale (ad esempio, qui ) non sembra avere un'opzione per specificare il file di registro. Potete per favore confermare questo? Inoltre, hai qualche idea su come posso aggirare questo problema?


3
Un anno di ritardo, ma una buona risposta completa è stata data qui: stackoverflow.com/questions/4549489/…
Rahul Jha,

Risposte:


133

La nohuppagina man di coreutils GNU indica che puoi usare il normale reindirizzamento:

Se l'input standard è un terminale, reindirizzarlo da / dev / null. Se l'output standard è un terminale, aggiungere l'output a 'nohup.out', se possibile, '$ HOME / nohup.out' altrimenti. Se l'errore standard è un terminale, reindirizzarlo all'output standard. Per salvare l'output su FILE, utilizzare 'nohup COMMAND> FILE'.

Modifica: all'inizio non ho letto il tuo link; potresti avere una versione diversa di nohup, sebbene questa sezione suggerisca che puoi ancora utilizzare il reindirizzamento normale:

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

È possibile reindirizzare l'output standard e l'errore standard su file diversi:

nohup myprogram > myprogram.out 2> myprogram.err

o nello stesso file:

nohup myprogram > myprogram.out 2>&1

54
Per rispondere in modo specifico: usa nohup program > program.out &per scrivere l'output program.outinvece dinohup.out
Jim Paris

4
E questo non è specifico per le utility GNU, il comportamento è specificato da POSIX.
Gilles,

3
Non sembra funzionare. Reindirizza l'output del comando nohup piuttosto che l'output del myprogram.
Kris

2
@Kris Il reindirizzamento dovrebbe avvenire prima del &personaggio finale
yunzen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.