PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sämtliche Debugmeldungen in Datei umleiten!



zagadka
29-09-2005, 12:38
Hallo!

ich habe ein Problem mit der Ausgabeumleitung in der Shell, die nicht tut, was sie soll!

Ich starte ein Programm aus der Shell und leite die Debugmeldungen, die in der Shell ab und zu ausgeworfen werden mit dem ">" in eine Datei um.

runvdr > /var/log/vdr.log

Das Problem: Es wandert nur ein geringer Teil der tatsächlichen Ausgaben in die Datei. Die Ausgabe müsste doch exakt der in der Shell ohne Umleitung entsprechen.

Woran liegt das?

Gruß

Joghurt
29-09-2005, 13:40
Logausgaben werden oft nach stderr geleitet.

Programm 2>&1 > logleitet alle ausgaben nach log,
Programm 2> logleitet nur die Ausgaben an stderr nach log.

zagadka
29-09-2005, 16:20
Klasse, wenn das klappt!!!!

Besten Dank!

:)

RapidMax
29-09-2005, 21:28
Logausgaben werden oft nach stderr geleitet.

Programm 2>&1 > log
Kleine Korrektur:

Programm > log 2>&1

Gruss, Andy

zagadka
29-09-2005, 21:55
Kleine Korrektur:

Programm > log 2>&1


Danke Andy, das sieht schon wesentlich besser aus. Das erste hat die gleiche Wirkung wie die einfache Umleitung. Das klappt jetzt, was die Applikation (vdr) angeht. Die Ausgabem vom Plugin liefert er leider immer noch nicht vollständig. Gibts noch andere Möglichkeiten, die gesamten Ausgaben in der Shell inkl. der Kindprozesse komplett zu bekommen? Trotzdem besten Dank erstmal.

Gruß

Rupert

zagadka
30-09-2005, 12:04
Ich habe das noch einmal ganz genau getestet und tatsächlich gehen keine Informationen verloren! Sie werden nur nicht zeitnah ins Log geschrieben. Erst wenn etwa 82 Zeilen vorhanden sind werden die ins Log geschrieben! Kann man mir das jemand erklären, und eine Lösung anbieten?

Wenn man zwischendurch von einer Shell ein echo test > log absetzt wird "test" sofort ins Log geschrieben.

Gruß

baumgartner
30-09-2005, 12:12
was ist das denn für ein programm, oder worin ist es geschrieben?

zagadka
30-09-2005, 17:33
Das ist der VDR (Digitaler Videorecorder), aber der hat damit nichts zu tun, denke ich mal. Startet man den aus der Shell sind ja alle Meldungen da, dass ist ja das Merkwürdige.

Gruß

RapidMax
30-09-2005, 22:51
Da schlägt der Buffer zu. Normalerweise werden bei Streams eine gewisse Menge an Daten gebuffert, bevor sie weitergereicht werden.

Gruss, Andy

zagadka
01-10-2005, 13:13
Da schlägt der Buffer zu. Normalerweise werden bei Streams eine gewisse Menge an Daten gebuffert, bevor sie weitergereicht werden.

Gruss, Andy

Kann man den vielleicht minimieren?

ich habe jetzt eine nicht sehr elegante Lösung gefunden, aber sie funktioniert.

Ausgabe nach Terminal 8 umleiten

/usr/local/bin/vdr --terminal=/dev/tty8"

und mit watch reinschauen und in Datei umleiten

watch -n2 fold -w 80 /dev/vcs8 | tee /var/log/vdr.log

Nicht sehr hübsch, das Ganze...

Gruß, Rupert

baumgartner
03-10-2005, 11:03
kommt drauf an, hast du den source code für das programm.

in perl kann man mit $| =0 den buffer deaktivieren.

unter C müsst ich nachschauen, unter www.pronix.de wirst du sicha fündig

btw: die aktuelle lösung ist wirklich hässlich!

rais
03-10-2005, 22:27
Moin Rupert,

Kann man den vielleicht minimieren?

ich habe jetzt eine nicht sehr elegante Lösung gefunden, aber sie funktioniert.

Ausgabe nach Terminal 8 umleiten

/usr/local/bin/vdr --terminal=/dev/tty8"

und mit watch reinschauen und in Datei umleiten

watch -n2 fold -w 80 /dev/vcs8 | tee /var/log/vdr.log

Du sach mal, kannst Du nicht einfach direkt Deine log-Datei angeben, also
/usr/local/bin/vdr --terminal=/var/log/vdr.log
bzw. vielleicht gibt's bei dem vdr ja 'n entsprechend anderslautenden Parameter ?
MfG,