• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

"/dev/null 2>&1" Was bewirkt das?

A

Anonymous

Gast
Ich habe zum Beispiel folgendes in die crontab reingeschrieben, damit t-online nicht zu t-offline wird:

ping -c 1 www.t-online.de /dev/null 2>&1

Alle 12 min ein ping. Klappt.

Ich wüßte jetzt nur zu gerne was diese Endung bewirkt.

Bringt mir eine/r Licht in die Sache?

Gruß Ben
 

admine

Ultimate Guru
Moin,

Standard-Fehler-Ausgabe wird umgeleitet auf Standard-Ausgabe und das alles geht nach /dev/null ;)

Heißt:
jegliche Ausgaben des Cron-Jobs gehen nach /dev/null
 
OP
A

Anonymous

Gast
...also Ausgabe in's Nirwana, wenn ich das richtig verstehe.

Vielen Dank für die schnelle Hilfe
Ben
 

nobbiew

Hacker
Bernhard Peter schrieb:
Ich habe zum Beispiel folgendes in die crontab reingeschrieben, damit t-online nicht zu t-offline wird:

ping -c 1 www.t-online.de /dev/null 2>&1

Aber nur wenn o.g. Zeile nur ein Fehler beim Abschreiben war richtig ist sie
Code:
ping -c 1 www.t-online.de >/dev/null 2>&1
 

regexer

Advanced Hacker
Eine etwas ausführlichere Erklärung:
Linux kennt zwei Ausgabekanäle. Kanal Nr. 1 ist die Standardausgabe und wird auch manchmal mit "STDOUT" abgekürzt. Kanal Nr. 2 ist der Fehlerkanal oder auch "STDERR". Dort werden i.d.R. die Fehlermeldungen ausgegeben.

Bei einer "normalen" Ausführung deines Kommandos auf der Konsole erzeugen diese Kanäle keinen Unterschied. Beide erscheinen auf dem Bildschirm. Doch man kann diese Kanäle jeweils seperat in eine Datei (in deinem Fall der Mülleimer) mit dem Zeichen ">" umleiten.
Beispiele:
Code:
user@host:~> ping -c 1 www.t-online.de 1> /dev/null
user@host:~> ping -c 1 www.t-online.de > /dev/null
user@host:~> ping -c 1 www.asdfasdfasdf.de >/dev/null
ping: unknown host www.asdfasdfasdf.de
user@host:~>
Erklärung
Die Pingstatistik wird auf Kanal 1 ausgegeben. Und diese wandert in den Mülleimer. Beim Kanal Nr. 1 braucht man die Nummer übrigens nicht angeben; es reicht auch ein einfaches Umleitungszeichen. Kanal Nr. 2 haben wir nicht umgeleitet, und auf diesem wird in diesem Beispiel der Fehler ausgegeben. Diesen können wir mit
Code:
2> /dev/null
wegwerfen oder alternativ auf den Kanal Nr. 1 leiten. Und das geschieht mit
Code:
2> &1

Alles klar?
 

styyxx

Member
Hallo,

das gilt nicht nur für 1 und 2. Es läßt sich damit jeder Dateideskriptor umleiten/duplizieren/öffnen/schließen.

Grüße
styyxx
 

regexer

Advanced Hacker
styyxx schrieb:
das gilt nicht nur für 1 und 2. Es läßt sich damit jeder Dateideskriptor umleiten/duplizieren/öffnen/schließen.
Klär mich auf! Ich kenn nur 1 und 2. Strenggenommen vielleicht noch 0 als STDIN...

Übrigens: Eine verständliche Zusammenfassung des Themas ist z.B. unter http://suse-linux-faq.koehntopp.de/q/q-shell-redirect.html zu finden
 

styyxx

Member
Hallo,

bei den Zahlen in dem Redirector 2>&1 handelt es sich um Dateideskriptoren. Es bedeutet eigentlich nur das du den Deskriptor 2 auf Deskriptor 1 kopierst. Es lassen sich aber alle möglichen Deskriptoren angeben, bis zum Maximum (ulimit -n). Es geht also auch 135>&76 was den 135 Dd auf den 76 kopiert. Du kannst auch eine anderen Dateideskriptor als 0 zum lesen öffnen, z.B:
Code:
read -u4 variable 4<file
echo $variable
Mit < sagst du eigentlich nur das du einen Dateideskriptor mit Lesezugriff öffnen willst, mit > eben einen mit Schreibzugriff.
Solche Sachen sind nützlich wenn du z.B. aus mehreren Dateien gleichzeitig lesen willst. Ansonsten braucht man sowas eher für Systemprogrammierung und komplexere Skripte. Ich bin jedenfalls noch gut ohne ausgekommen, obwohl das ja nix heißen mag ;-)
Desweiteren findest du unter
http://www.linuxfibel.de/bash.htm
eine gute Erklärung.

Grüße
styyxx[/i]
 

regexer

Advanced Hacker
styyxx schrieb:
Es lassen sich aber alle möglichen Deskriptoren angeben, bis zum Maximum (ulimit -n). Es geht also auch 135>&76 was den 135 Dd auf den 76 kopiert. [...] Ansonsten braucht man sowas eher für Systemprogrammierung und komplexere Skripte. Ich bin jedenfalls noch gut ohne ausgekommen, obwohl das ja nix heißen mag ;-)
Achso! Ich dachte schon, es gäbe noch weitere Standards außer 1 und 2. Bisher reichten die in meinem Fall auch aus. Ich glaube, ich habe schon mal den Deskriptor 3 spaßeshalber ausprobiert, konnte aber keinen höheren Sinn dahinter feststellen. Insofern ist es trotzdem "gut, dass wir mit einander gesprochen haben".

Gruß zurück
 
Oben