2010-12-28 5 views
179

Wenn ich nohup some_command & starte, geht der Ausgang zu nohup.out; man nohup sagt bei info nohup was wiederum zu suchen, sagt:Kann ich den Namen von `nohup.out` ändern?

Wenn die Standardausgabe ein Terminal, der Standardausgabe des Befehl an die Datei angehängt wird ‚nohup.out‘; Wenn nicht beschrieben werden kann, wird an die Datei '$ HOME/nohup.out' angehängt; und wenn , in die nicht geschrieben werden kann, wird der Befehl nicht ausgeführt.

Aber wenn ich schon ein Befehl mit Ausgang auf /nohup.out gehen mit nohup haben, und ich will eine andere, nohup Befehl ausgeführt werden soll, kann ich die Ausgabe auf nohup2.out umleiten?

Antwort

285
nohup some_command &> nohup2.out& 

und voila.


Ältere Syntax für Bash Version < 4:

nohup some_command > nohup2.out 2>&1& 
+4

@ismail, wenn ich verstehe, leitet dies die Ausgabe von stdout und nohup.out, in nohup2.out. Was macht dann "2> & 1 &"? –

+12

'2> & 1' leitet' stderr' in die gleiche Ausgabedatei wie 'stdout' um, was in diesem Fall' nohup2.out' ist. – ismail

+14

In Bash 4 können die zwei Weiterleitungen als '&> nohup2.out' abgekürzt werden. – ephemient

43

Aus irgendeinem Grund die obige Antwort für mich nicht funktioniert; Ich kehrte nicht zur Eingabeaufforderung zurück, nachdem ich es mit der nachgestellten & ausgeführt hatte. Stattdessen probierte ich einfach mit

nohup some_command > nohup2.out& 

und es funktioniert so, wie ich es will. Lassen Sie das hier für den Fall, dass jemand anders in der gleichen Situation ist. Running Bash 4.3.8 als Referenz.

+0

Ich hatte genau das gleiche Problem und Ihre Lösung löste es. Vielen Dank. – Sadjad

+0

Das gleiche für mich. thnks –

+0

Es hat auch für mich funktioniert! Vielen Dank! –

10

Da die Dateihandler auf Linux-Unix-Systemen auf i-Knoten zeigen (die unabhängig von Dateinamen gespeichert werden) Sie können den Standardnamen nohup.out zu jedem anderen Dateinamen jederzeit nach dem Start nohup something& umbenennen. So auch könnte man folgendes tun:

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

Jetzt something fügt Zeilen nohup2.out und something2 zu nohup.out.

5

Die obigen Methoden entfernen die Ausgabedateidaten, wenn Sie über den Befehl nohup laufen.

Zu Ausgabe in benutzerdefinierter Datei anhängen Sie können >> in nohup Befehl verwenden.

nohup your_command >> filename.out & 

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