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


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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.