






Wie ein Müllcontainer fungiert /dev/null
unter UNIX als schwarzes Loch für Daten.
(by-nc-sa 2.0)
Dies ist der erste Beitrag der OS-Internals Reihe. Ich versuche unter diesem Begriff sehr technische Aspekte von Linux zu beleuchten und verständlich zu erklären.
Die meisten, die Linux benutzen, sollten das Gerät /dev/null
kennen, welches auch Null-Gerät genannt wird. Hierbei handelt es sich um ein spezielles Gerät, das alle Eingehenden Daten sofort löscht und gar nicht erst persistiert. Es wird daher auch oft scherzhaft als schwarzes Loch oder Nirvana bezeichnet.
Technisch ist /dev/null
– genau wie alles andere bei Linux – eine Datei, jedoch eine spezielle, die output streams bereit stellt und input streams entgegen nehmen kann (doch zu Dateien in Linux in einem späteren Teil mehr). Wenn man schauen möchte was es ist, kann man auch einfach folgendes machen und sich die Ausgabe anschauen:
$ ls -alh /dev/null
crw-rw-rw- 1 root root 1, 3 Nov 10 19:06 /dev/null
Es ist also eine spezielle Datei (das c
bedeutet char device), jeder hat Zugriff darauf, es gehört root
und es werden weitere, für uns momentan nicht wichtige, Informationen angezeigt.
Nutzen von /dev/null
Man kann es einsetzen um z.B. einen gewissen output-Stream (z.B. stderr
) aus der Ausgabe von einem Programm zu entfernen. Hierfür benutzt man einfach den Umleitungs-Operator (redirection operator, also das >
Zeichen) kombiniert mit der file descriptor number für stderr
(sprich 2):
$ find /etc/ -iname apt 2> /dev/null
Wir suchen hier nach allen Dateien und Ordnern unter /etc/
in deren Namen der string apt
vorkommt. Alle Ausgaben auf den stream stderr
werden ins Nirvana geschickt.
Gefahren von /dev/null
Es ist sehr praktisch einfach Ausgaben ins Jenseits zu schicken, aber es gibt eine Wichtigkeit zu beachten: /dev/null
ist eine Datei, es ist also möglich dort etwas hinein zu schreiben aber nicht hin zu verschieben. Man sagt zwar immer „Dann tust du das in dev-null rein …“ aber solche Sätze sind gefährlich, wie das folgende Beispiel zeigt:
Als erstes leiten wir normale Ausgaben um:
$ echo test123 > /dev/null
$ cat /dev/null
Der cat
Befehl gibt nichts aus, der string test123
ist also verschwunden. Super!
Folgende Befehle können das System tatsächlich beschädigen.
Man sollte sie also nicht leichtfertig ausprobieren!
Jetzt kommt das, was viele Leute unwissentlich falsch machen, obwohl es sehr gefährlich sein kann:
$ echo test123 > test.txt
$ sudo mv test.txt /dev/null
$ ll /dev/null
-rw-r--r-- 1 hauke hauke 8 Nov 10 21:05 /dev/null
$ cat /dev/null
test123
Wir erstellen also eine Datei mit test123
als Inhalt und verschieben sie nach /dev/null
. Aber was ist denn da passiert!? Auf ein mal enthält unser schwarzes Loch ja einen Inhalt und ist eine ganz normale Datei!
Das wirklich gefährliche ist dabei, dass – wie man auch hier sehen kann – die Rechte nicht die gleichen sind wie vorher. In diesem Beispiel kann nur der Besitzer in die Datei schreiben. Viele Prozesse benutzen aber /dev/null
, daher kann es hier zu ernsten Problemen bis hin zum Absturz von Anwendungen kommen.
Auch benutzen einige Programme den Inhalt von /dev/null
(also nämlich nichts), was jetzt auch gehörig schief gehen kann.
Wir sehen also, dass man Dateien nicht nach /dev/null
verschieben kann um diese zu löschen, denn das geht immer noch am sichersten mi rm my.file
. Jetzt haben wir unser schwarzes Loch ganz einfach mir unserer Textdatei überschrieben. Oops.
Man kann aber den Fehler mit folgenden Befehlen beheben um den ursprünglichen Zustand wiederherzustellen:
$ sudo rm /dev/null
$ sudo mknod /dev/null c 1 3
$ sudo chmod 666 /dev/null
WTF: /dev/null unter Windows o.O
Ja, auch unter Windows (schon seit DOS Zeiten) gibt es ebenfalls ein /dev/null
unter dem Namen NUL
(in der PowerShell ist es $null
). Genau wie bei Linux kann man dort Ausgaben, löschen: echo 123 >
NUL. Bei Windows kann man gar keine Dateien oder Verzeichnisse nach NUL
schieben, da der move
Befehl Argumente ungleich null
erwartet und NUL
eben als null
gilt (einfach mal in der PowerShell versuchen move datei.txt $null
auszuführen).
Trivia zu /dev/null
- Gilt in der Hacker-Community als nichts, bzw. genereller Müllcontainer für Daten („Complaints >
/dev/null
“ oder „You are/dev/null
to me.“) - Reddit hat ein subreddit namens devnull, welches unter /r/devnull erreichbar ist. Die Seite ist komplett leer
- Wenn man file:///dev/null aufruft erscheinen zufällige Zeichen … nein Scherz, die Seite ist ebenfalls komplett leer :O
- Die Zeitschrift c’t hat einen
/dev/null-
Chip raus gebracht, der Daten in das Flackern einer LED umwandelt und dann löscht






Pingback: OS-Internals #2: Ext2 und Dateien in Linux – [curi0sity]