Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

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

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Bernhard Peter

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

Beitrag von Bernhard Peter »

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
Administrator
Administrator
Beiträge: 8865
Registriert: 15. Feb 2004, 21:13
Kontaktdaten:

Beitrag von admine »

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
..:: unser Linux-Club-Wiki ::..
-------------------------
..:: Deutsche Mugge ::..
-------------------------
Bernhard Peter

Beitrag von Bernhard Peter »

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

Vielen Dank für die schnelle Hilfe
Ben
admine
Administrator
Administrator
Beiträge: 8865
Registriert: 15. Feb 2004, 21:13
Kontaktdaten:

Beitrag von admine »

Bernhard Peter hat geschrieben:...also Ausgabe in's Nirwana, wenn ich das richtig verstehe.
jep ;)
..:: unser Linux-Club-Wiki ::..
-------------------------
..:: Deutsche Mugge ::..
-------------------------
Benutzeravatar
nobbiew
Hacker
Hacker
Beiträge: 497
Registriert: 1. Mär 2004, 23:26

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

Beitrag von nobbiew »

Bernhard 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
Aber nur wenn o.g. Zeile nur ein Fehler beim Abschreiben war richtig ist sie

Code: Alles auswählen

ping -c 1 www.t-online.de >/dev/null 2>&1
Benutzeravatar
regexer
Advanced Hacker
Advanced Hacker
Beiträge: 1005
Registriert: 3. Dez 2004, 09:29
Wohnort: $_

Beitrag von regexer »

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: 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:~> 
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: Alles auswählen

2> /dev/null
wegwerfen oder alternativ auf den Kanal Nr. 1 leiten. Und das geschieht mit

Code: Alles auswählen

2> &1
Alles klar?
styyxx
Member
Member
Beiträge: 61
Registriert: 12. Okt 2004, 14:43

Beitrag von styyxx »

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
Benutzeravatar
regexer
Advanced Hacker
Advanced Hacker
Beiträge: 1005
Registriert: 3. Dez 2004, 09:29
Wohnort: $_

Beitrag von regexer »

styyxx hat geschrieben: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- ... irect.html zu finden
styyxx
Member
Member
Beiträge: 61
Registriert: 12. Okt 2004, 14:43

Beitrag von styyxx »

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: Alles auswählen

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]
Benutzeravatar
regexer
Advanced Hacker
Advanced Hacker
Beiträge: 1005
Registriert: 3. Dez 2004, 09:29
Wohnort: $_

Beitrag von regexer »

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 ;-)
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
styyxx
Member
Member
Beiträge: 61
Registriert: 12. Okt 2004, 14:43

Beitrag von styyxx »

Achso! Ich dachte schon, es gäbe noch weitere Standards außer 1 und 2.
Gibt es, die 0 ;-)


Ja gut zu wissen das sowas gibt und geht. Dann ist man nicht verwirrt wenn man es sieht
Antworten