Hallo Sven und Jan, Am Sonntag 22 August 2010 schrieb Sven Hartge: > Jan Kolarik <kormoran@justmail.de> wrote: > > nur zur Ergänzung: > > Maschine A: Debian/Lenny KDE-3 > > Maschine B: Ubuntu-10.4 KDE-4 > > > > Nach ssh von Debian nach Ubuntu wirft dort sogar der folgende Aufruf > > (mit Umleitung auf /dev/null) was auf die Konsole: > > > > ------------------------------------------ > > konqueror > /dev/null 2>&1 & > > kdeinit4: preparing to launch /usr/lib/kde4/kio_file.so > > kdeinit4: preparing to launch /usr/lib/kde4/kio_file.so > > kdeinit4: preparing to launch /usr/lib/kde4/kio_file.so > > Die Reihenfolge der Ausgabe-Umleitung ist relevant. > > Du schickst hier erst STDOUT nach /dev/null und machst dann STDERR zum > neuen STDOUT. Nein, die Reihenfolge ist meines Erachtens vollkommen korrekt: Wie Du schreibst leitet Jan zunächst STDOUT nach /dev/null um und dann STDERR nach STDOUT, das bereits auf /dev/null zeigt. Ergo: Beides geht nach /dev/null. martin@shambhala:~> mkdir leer martin@shambhala:~> ls -ld leer gibts-nicht ls: Zugriff auf gibts-nicht nicht möglich: Datei oder Verzeichnis nicht gefunden drwxr-xr-x 2 martin martin 4096 22. Aug 08:58 leer martin@shambhala:~#2> true martin@shambhala:~> ls -ld leer gibts-nicht > /dev/null 2>&1 martin@shambhala:~#2> => Keine Ausgabe > Wenn du dagegen > > konqueror 2>&1 >/dev/null > > machst, dann leitest du erst STDERR nach STDOUT um und diesen dann nach > /dev/null. Leitet Jan hingegen STDERR zunächst nach STDOUT um, das aber noch auf den Bildschirm zeigt, und erst dann STDOUT nach nach /dev/null, so landet nur STDOUT auf /dev/null, nicht jedoch STDERR, das die Shell weiterhin auf den Bildschirm schreibt. martin@shambhala:~#2> true martin@shambhala:~> ls -ld leer gibts-nicht 2>&1 >/dev/null ls: Zugriff auf gibts-nicht nicht möglich: Datei oder Verzeichnis nicht gefunden martin@shambhala:~#2> => STDERR landet auf dem Bildschirm, also dort wo STDOUT vor der folgenden Umleitung hinzeigte. > Alternativ kannst du, um ganz sicher zu gehen, natürlich auch > > konqueror 2>/dev/null >/dev/null > > schreiben Oder bei aktuellen Shells (zumindest Bash und Z-Shell): martin@shambhala:~#2> true martin@shambhala:~> ls -ld leer gibts-nicht &>/dev/null martin@shambhala:~#2> Ist praktisch, wenn man nicht jedesmal über die richtige Reihenfolge nachdenken möchte und zudem weniger Tipparbeit. Zum Testen eignet sich drei Terminal-Fenster wie Konsole, Terminal, xterm: Eines zum Absetzen der Befehle, eines für STDOUT, eines für STDERR. Der Befehl tty ermittelt die Geräte-Datei. Dann einfach umleiten und schauen, im welchen Fenster die Ausgabe erscheint ;-). Ich unterrichte das Zeug ;-) Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7
Attachment:
signature.asc
Description: This is a digitally signed message part.