So leiten Sie die Ausgabe einer Anwendung im Hintergrund nach / dev / null um

100

Ich möchte die von einer Hintergrundanwendung unter Linux generierte Ausgabe nach / dev / null umleiten.

Ich verwende den Kate-Texteditor und er druckt alle Debug-Meldungen auf dem Terminal, die ich nach / dev / null umleiten möchte.

Irgendeine Idee, wie es geht?

Vielen Dank

Kiran
quelle
Schauen Sie sich diese Seite an. xaprb.com/blog/2006/06/06/what-does-devnull-21-mean
richard.g

Antworten:

230

Sie nutzen:

yourcommand  > /dev/null 2>&1

Wenn es im Hintergrund ausgeführt werden soll, fügen Sie ein hinzu &

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1bedeutet Weiterleiten stdoutzu /dev/nullUND stderran den Ort, an dem stdoutzu diesem Zeitpunkt Punkte liegen

Wenn Sie stderrauf der Konsole auftreten möchten und nur stdoutzu /dev/nullIhnen gehen möchten , können Sie Folgendes verwenden:

yourcommand 2>&1 > /dev/null

In diesem Fall stderrwird an stdout(z. B. Ihre Konsole) umgeleitet und anschließend wird das Original an stdoutumgeleitet/dev/null

Wenn das Programm nicht beendet werden soll, können Sie Folgendes verwenden:

nohup yourcommand &

Ohne Parameter landen alle Ausgaben in nohup.out

Evil Dead
quelle
beide funktionieren, aber es gibt einen kleinen Unterschied, aber denken Sie nicht daran
evildead
ah ok bekam es und fügte die andere Version hinzu
evildead
Wenn dies der letzte Befehl in einer Bash-Datei ist, ist mir aufgefallen, dass die Befehlskonsole, die die Datei aufgerufen hat, ohne Eingabeaufforderung verlassen wird.
Dennis
@elig Umleitung der Ausgabe einer bereits laufenden Anwendung ist imo nicht oder zumindest nicht so einfach möglich, da die Umleitung über dup2()unmittelbar danach, fork()aber vorher erfolgt exec*(). Sobald exec*()das Programm ausgeführt wurde, kann die Shell die Ausgabe dieses Prozesses nicht mehr umleiten. Korrigieren Sie mich, wenn ich falsch liege, aber ich weiß nichts über eine Shell, die solche Funktionen implementiert hat.
Evildead
3

Diese leiten auch beide um:

yourcommand  &> /dev/null

yourcommand  >& /dev/null

obwohl das Bash-Handbuch besagt, dass das erste bevorzugt wird.

Jim Hunziker
quelle