Am Dienstag 05 September 2006 21:29 schrieb Christian Paul: > Am Dienstag, 5. September 2006 12:40 schrieb Martin Steigerwald: > > Hallo, > > > > ich möchte gerne mit der Bash (3.1-5) die Standard-Fehler-Ausgabe > > eines Befehls pipen. Mein Ansatz ist: > > > > strace free 1>/dev/null | cat > > > > Doch das liefert nicht das gewünschte Ergebnis und sogar eine > > Fehlermeldung: > > [..] > Ich empfehle zur Lektüre: > http://www.thomashertweck.de/redir.html > hat mir zum Verständnis weitergeholfen.
Hallo, vielen Dank für die ganzen Hinweise! [EMAIL PROTECTED]:~ -> strace free 2>test total used free shared buffers cached Mem: 775136 753772 21364 0 0 404264 -/+ buffers/cache: 349508 425628 Swap: 979924 74992 904932 Die vier Writes möchte ich haben: [EMAIL PROTECTED]:~ -> tail -n8 test mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f7b000 write(1, " total used "..., 74) = 74 write(1, "Mem: 775136 753772 "..., 74) = 74 write(1, "-/+ buffers/cache: 349508 "..., 41) = 41 write(1, "Swap: 979924 74992 "..., 41) = 41 munmap(0xb7f7b000, 4096) = 0 exit_group(0) = ? Process 3719 detached Genau das bekomme ich mit keiner dieser Varianten hin: strace free 2>&1 >/dev/null | tail -n8 (strace free 1>/dev/null) 2>&1 | tail -n8 strace free 2>&1 1>/dev/null | tail -n8 Ich erhalte immer: [EMAIL PROTECTED]:~ -> strace free 2>&1 1>/dev/null | tail -n8 read(3, "MemTotal: 775136 kB\nMemFre"..., 1023) = 598 fstat64(1, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0 ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbff83c74) = -1 ENOTTY (Inappropriate ioctl for device) mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7eea000 write(1, " total used "..., 230) = 230 munmap(0xb7eea000, 4096) = 0 exit_group(0) = ? Process 6464 detached Da ist nur der erste Write und eben die Fehlermeldung zu dem ioctl-Call, der aber im der obigen test-Datei nicht ausgeführt wird. Tolle Kniffel-Aufgabe, oder? Komischerweise ging es einmal mit der letzten Variante, aber das konnte ich dann nicht reproduzieren... Ich glaub langsam, dass da strace einfach nicht mitspielt... vielleicht ist der ioctl von strace und nicht von free... Könnte das ein Bug sein? Oder einfach ein Nebeneffekt von strace? Meinungen? Denn so gehts: [EMAIL PROTECTED]:~ -> cat ausgabe.sh #!/bin/bash echo "Dies ist eine Ausgabe auf stdout." >&1 echo "Dies ist eine Ausgabe auf stderr." >&2 [EMAIL PROTECTED]:~ -> ./ausgabe.sh 2>/dev/null Dies ist eine Ausgabe auf stdout. [EMAIL PROTECTED]:~ -> (./ausgabe.sh 1>/dev/null) 2>&1 Dies ist eine Ausgabe auf stderr. [EMAIL PROTECTED]:~ -> ./ausgabe.sh 2>&1 1>/dev/null Dies ist eine Ausgabe auf stderr. [EMAIL PROTECTED]:~ -> ./ausgabe.sh 1>/dev/null 2>&1 Nur die letzte Variante geht nicht, was anhand der von Dir empfohlenen Lektüre verständlich ist. Grüße, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7