Gibt es eine Möglichkeit, die Ausgabe von nohup in eine andere Protokolldatei als nohup.out umzuleiten?

112

Ich benutze das Programm häufig, nohupdamit meine Prozesse nicht hängen bleiben. Wenn ich das Programm also programimmun gegen Abstürze machen möchte, verwende ich den Befehl

nohup program &

Wo wird &der Prozess in den Hintergrund gestellt?

Beim Starten nohupgibt mir die Nachricht:

nohup: Ausgabe an `nohup.out 'anhängen

Gibt es eine Möglichkeit, die Ausgabe an eine andere Datei als zu senden nohup.out? Oft möchte ich viele Prozesse im selben Verzeichnis ausführen nohup, aber wenn ich das tue, wird die gesamte Ausgabe in einer einzigen nohup.outDatei zusammengefasst.

Die manuelle Seite (zum Beispiel hier ) scheint nicht eine Option zu haben , für die Protokolldatei angeben. Können Sie das bitte bestätigen? Haben Sie auch Gedanken darüber, wie ich dieses Problem umgehen kann?

Andrew
quelle
3
Ein Jahr zu spät, aber eine gute umfassende Antwort wurde hier gegeben: stackoverflow.com/questions/4549489/…
Rahul Jha

Antworten:

132

Die nohupManpage zu GNU coreutils gibt an, dass Sie die normale Umleitung verwenden können:

Wenn es sich bei der Standardeingabe um ein Terminal handelt, leiten Sie es von / dev / null um. Wenn die Standardausgabe ein Terminal ist, hängen Sie die Ausgabe nach Möglichkeit an 'nohup.out' an, andernfalls an '$ HOME / nohup.out'. Wenn der Standardfehler ein Terminal ist, leiten Sie ihn zur Standardausgabe um. Verwenden Sie 'nohup COMMAND> FILE', um die Ausgabe in FILE zu speichern.

Bearbeiten: Ich habe Ihren Link zuerst nicht gelesen. Möglicherweise haben Sie eine andere Version von nohup. In diesem Abschnitt wird jedoch empfohlen, die normale Umleitung weiterhin zu verwenden:

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

Sie können die Standardausgabe und den Standardfehler in verschiedene Dateien umleiten:

nohup myprogram > myprogram.out 2> myprogram.err

oder in die gleiche Datei:

nohup myprogram > myprogram.out 2>&1
lk-
quelle
54
Um genau zu antworten: Verwenden Sie nohup program > program.out &diese Option, um die Ausgabe an program.outstatt annohup.out
Jim Paris,
4
Und dies ist nicht spezifisch für GNU-Dienstprogramme, das Verhalten wird von POSIX festgelegt.
Gilles
3
Es scheint nicht zu funktionieren. Es leitet die Ausgabe des Befehls nohup um und nicht die Ausgabe von myprogram.
Kris
2
@Kris Redirection sollte vor dem &
abschließenden