Kann ich den Namen von "nohup.out" ändern?

254

Wenn ich laufe nohup some_command &, geht die Ausgabe zu nohup.out; man nohupsagt zu schauen, info nohupwas wiederum sagt:

Wenn die Standardausgabe ein Terminal ist, wird die Standardausgabe des Befehls an die Datei 'nohup.out' angehängt. Wenn dies nicht beschrieben werden kann, wird es an die Datei '$ HOME / nohup.out' angehängt. und wenn das nicht geschrieben werden kann, wird der Befehl nicht ausgeführt.

Aber wenn ich bereits einen Befehl nohupmit Ausgabe verwende /nohup.outund einen anderen nohupBefehl ausführen möchte , kann ich die Ausgabe umleiten nohup2.out?

David LeBauer
quelle

Antworten:

416
nohup some_command &> nohup2.out &

und voila.


Ältere Syntax für Bash-Version <4:

nohup some_command > nohup2.out 2>&1 &
ismail
quelle
4
@ismail, wenn ich das verstehe, leitet dies die Ausgabe von stdout und nohup.out weg in nohup2.out. Was macht 2>&1&dann?
David LeBauer
12
2>&1leitet stderrzu derselben Ausgabedatei weiter wie stdoutin diesem Fallnohup2.out
ismail
17
In Bash 4 können die beiden Weiterleitungen als eine abgekürzt werden &> nohup2.out.
Ephemient
1
Ich habe &> nohup2.out ausprobiert und es funktioniert, aber wie können Sie Ihre Bash-Version erkennen?
Mönch
9
@monkut bash --version
ismail
58

Aus irgendeinem Grund hat die obige Antwort bei mir nicht funktioniert. Ich bin nach dem Ausführen nicht wie erwartet mit dem nachfolgenden & zur Eingabeaufforderung zurückgekehrt. Stattdessen habe ich es einfach mit versucht

nohup some_command > nohup2.out&

und es funktioniert so wie ich es will. Lassen Sie dies hier, falls sich jemand anderes in der gleichen Situation befindet. Ausführen von Bash 4.3.8 als Referenz.

Gottschmied
quelle
12

Da die Dateihandler auf i-Knoten (die unabhängig von Dateinamen gespeichert sind) auf Linux / Unix-Systemen verweisen, können Sie den Standard nohup.outjederzeit nach dem Start in einen anderen Dateinamen umbenennen nohup something&. So könnte man auch folgendes machen:

$ nohup something&
$ mv nohup.out nohup2.out
$ nohup something2&

Nun somethingfügt Linien nohup2.outund something2zu nohup.out.

TrueY
quelle
10

Die oben genannten Methoden entfernen Ihre Ausgabedateidaten, wenn Sie den obigen Befehl nohup ausführen.

Um Anfügen Ausgabe in benutzerdefinierter Datei können Sie verwenden >>in nohup Befehl.

nohup your_command >> filename.out &

Dieser Befehl hängt alle Ausgaben in Ihrer Datei an, ohne alte Daten zu entfernen.

Irshad Khan
quelle