it-swarm-eu.dev

Existuje způsob, jak přesměrovat výstup Nohup na jiný soubor protokolu než Nohup.out?

Často používám program Nohup, takže moje procesy jsou vůči zavěšení imunní. Takže pokud chci, aby byl program program imunní vůči hangupům, použiji příkaz

Nohup program &

kde & umístí proces na pozadí.

Když začnu, Nohup mi dá zprávu:

Nohup: připojuje výstup k `Nohup.out '

Existuje nějaký způsob, jak odeslat výstup do jiného souboru než Nohup.out? Často chci spouštět mnoho procesů ve stejném adresáři pomocí Nohup, ale pokud to udělám, veškerý výstup se spojí do jednoho Nohup.out soubor.

Zdá se, že stránka manuálu (například zde ) nemá možnost specifikovat soubor protokolu. Můžete to prosím potvrdit? Máte také nějaké myšlenky, jak mohu tento problém vyřešit?

126
Andrew

GNU coreutils Nohup man stránka naznačuje, že můžete použít normální přesměrování:

Pokud je standardní vstup terminál, přesměrujte jej z/dev/null. Pokud je standardní výstup terminál, připojte výstup k 'Nohup.out', pokud je to možné, '$ HOME/Nohup.out' jinak. Pokud je standardní chybou terminál, přesměrujte jej na standardní výstup. Chcete-li uložit výstup do FILE, použijte 'Nohup COMMAND> FILE'.

Edit: Nejprve jsem váš odkaz nečetl; můžete mít jinou verzi Nohup, i když tato část naznačuje, že stále můžete používat normální přesměrování:

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

Standardní výstup a standardní chybu můžete přesměrovat do různých souborů:

Nohup myprogram > myprogram.out 2> myprogram.err

nebo do stejného souboru:

Nohup myprogram > myprogram.out 2>&1
152
lk-

Přidáním Jim komentář jako odpověď zde pro větší viditelnost.

použijte Nohup program > program.out & pro zápis výstupu do program.out namísto Nohup.out

5
mrsrinivas