[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: KDE-Anwendungen, Debug-Ausgaben (tw. Ubuntu)



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.


Reply to: