stderr abfangen / in Datei umleiten

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
badera
Beiträge: 643
Registriert: 20.05.2004 20:01:50
Wohnort: Schweiz

stderr abfangen / in Datei umleiten

Beitrag von badera » 26.09.2007 14:28:16

Vielleicht ist der Titel nicht ganz korrekt; aber ganz falsch sicher auch nicht... deshalb sage ich, was ich machen möchte:
Ich möchte in einem script den Befehl mount verwenden und die Ausgabe von mount in ein logfile speichern. Allerdings scheinen Fehler von mount nicht auf STDOUT ausgegeben zu werden, denn:

Code: Alles auswählen

#/bin/bash
...
mount /mnt/backup >> mylog.txt
...
ins Logfile wird nichts geschrieben, dafür werden aber die Fehler auf den Bildschirm geschrieben.

Deshalb bin ich auf die Idee gekommen, man sollte wohl die Ausgabe auf STDERR in die Log-Datei schreiben, statt STDOUT.
Wie macht man das? Oder: Wie löse ich mein Problem?
Besten Dank schon für die Hilfe!
- Adrian

Benutzeravatar
armin
Beiträge: 2682
Registriert: 17.03.2005 11:49:14

Beitrag von armin » 26.09.2007 14:30:03

Code: Alles auswählen

mount /mnt/backup >> mylog.txt 2>&1
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams

Benutzeravatar
badera
Beiträge: 643
Registriert: 20.05.2004 20:01:50
Wohnort: Schweiz

Beitrag von badera » 26.09.2007 15:15:57

Bestenk Dank!! Kannst Du mir nur kurz erläutern, wie man das interpretieren muss bzw. was genau passiert bzw. warum das funktioniert? - Ich hab das noch nicht so im Griff - aber vielleicht lerne ichs ja auch mal :)
- Adrian

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 26.09.2007 15:21:54

Vielleicht nicht die beste Erklärung, aber es sollte doch verständlicher werden: http://netzmafia.de/skripten/unix/unix2.html
Oh, yeah!

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von cirrussc » 26.09.2007 15:27:16

Hi,
Trigger. hat geschrieben:

Code: Alles auswählen

mount /mnt/backup >> mylog.txt 2>&1
Muss die Umlenkung nicht vor die Datei?

Code: Alles auswählen

mount /mnt/backup 2>&1 >>   mylog.txt
Gruß cirrussc
Zuletzt geändert von cirrussc am 26.09.2007 15:36:28, insgesamt 1-mal geändert.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 26.09.2007 15:33:30

Das müsste egal sein bzw. kenne es eigentlich nur dahinter.
Oh, yeah!

Benutzeravatar
armin
Beiträge: 2682
Registriert: 17.03.2005 11:49:14

Beitrag von armin » 26.09.2007 15:37:15

cirrussc hat geschrieben:Muss die Umlenkung nicht vor die Datei?

Code: Alles auswählen

mount /mnt/backup >>  2>&1 mylog.txt
Sieht zwar auch schön aus, ist aber von der Syntax her nicht korrekt.
Meinst du eventuell so etwas: mount /mnt/backup 2> mylog.txt? Das würde einfach stderr in die Datei schreiben.

@badera: Einfach gesagt wird STDERR (2) nach STDIN (1) umgeleitet.
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von cirrussc » 26.09.2007 15:44:15

Trigger. hat geschrieben: Meinst du eventuell so etwas: mount /mnt/backup 2> mylog.txt? Das würde einfach stderr in die Datei schreiben.
Ja genau. Das war mir eigentlich klar, hab mich nur wieder ver/zer/kaputt-gedacht :(

Gruß cirrussc

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 26.09.2007 15:44:18

Hi,
badera hat geschrieben:Bestenk Dank!! Kannst Du mir nur kurz erläutern, wie man das interpretieren muss bzw. was genau passiert bzw. warum das funktioniert? - Ich hab das noch nicht so im Griff - aber vielleicht lerne ichs ja auch mal :)
- Adrian
in der Unix Philospohie gibt es drei Kanaele:
STDIN = 0
STDOUT = 1
STDERR = 2

Diese werden wie angegeben "durchnummeriert", in dem Beispiel wird STDERR an STDOUT angehaengt, was wiederum in eine Datei umgeleitet wird
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
badera
Beiträge: 643
Registriert: 20.05.2004 20:01:50
Wohnort: Schweiz

Beitrag von badera » 26.09.2007 16:06:40

Danke Euch für die rasche & hochkarätige Hilfe!
Entsprechend funktioniert also auch:

Code: Alles auswählen

mount /mnt/backup 1>>mylog.txt 2>>mylog.txt
interessant, dass nicht zuerst nur der stdout ins File geschrieben wird, und erst nachher stderr; sondern wenn Ausgaben entstehen, bei denen abwechslungsweise auf beides geschrieben wird, so landet es sogar richtig im mylog.txt. Entsprechend ist es egal, ob zuerst 1>> oder 2>> gemacht wird.
Nochmals besten Dank!

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 26.09.2007 17:09:53

badera hat geschrieben:Danke Euch für die rasche & hochkarätige Hilfe!
Kein Thema, erzaehls doch einfach weiter: "debianforum.de - da werden Sie geholfen" :lol:
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Antworten