Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.
"/dev/null 2>&1" Was bewirkt das?
Moderator: Moderatoren
"/dev/null 2>&1" Was bewirkt das?
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
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
Re: "/dev/null 2>&1" Was bewirkt das?
Aber nur wenn o.g. Zeile nur ein Fehler beim Abschreiben war richtig ist sieBernhard Peter hat geschrieben: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
Code: Alles auswählen
ping -c 1 www.t-online.de >/dev/null 2>&1
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:
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
wegwerfen oder alternativ auf den Kanal Nr. 1 leiten. Und das geschieht mit
Alles klar?
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: Alles auswählen
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:~>
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: Alles auswählen
2> /dev/null
Code: Alles auswählen
2> &1
Klär mich auf! Ich kenn nur 1 und 2. Strenggenommen vielleicht noch 0 als STDIN...styyxx hat geschrieben:das gilt nicht nur für 1 und 2. Es läßt sich damit jeder Dateideskriptor umleiten/duplizieren/öffnen/schließen.
Übrigens: Eine verständliche Zusammenfassung des Themas ist z.B. unter http://suse-linux-faq.koehntopp.de/q/q- ... irect.html zu finden
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:
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]
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: Alles auswählen
read -u4 variable 4<file
echo $variable
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]
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".styyxx hat geschrieben: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
Gruß zurück