Wie erstelle ich / dev / null?

65

Ich habe mein / dev / null gelöscht. Wie kann ich es wiederherstellen?

LanceBaynes
quelle
6
Ich habe einmal festgestellt, dass / dev / null durch eine normale Datei ersetzt wurde, in die nur root schreiben konnte. Ich dachte für einen Moment, dass ich alles neu installieren müsste, aber wie unten erwähnt, ist die Wiederherstellung trival, wenn Sie den Trick kennen.
Stuart Woodward
1
Ich habe es geschafft, / dev / null zu entfernen, indem ich beim Ausführen eines rm-Befehls in einem Skript die Pipe falsch herumgestellt habe. Autsch!
Flickerfly

Antworten:

81
mknod /dev/null c 1 3
chmod 666 /dev/null

Verwenden Sie diesen Befehl, um /dev/nulleine null(4)Hilfeseite zu erstellen oder zu verwenden .

harish.venkat
quelle
5
Der Vollständigkeit halber möchte ich darauf hinweisen, dass dies für alle Linux-basierten Systeme gilt. andere Systeme können andere Nummern haben.
Random832
2
Außerdem wird hierdurch nur die Gerätedatei selbst eingerichtet, und die Berechtigungen werden nicht wiederhergestellt. Du musst chmod go+wes manuell machen.
Attila O.
7
Die Nummer des Tieres!
wefwefa3
7
mknod -m 0666 /dev/null c 1 3- das gleiche, aber kürzer
fnkr
1
mknod -m 0666 /dev/null c 1 3hat perfekt funktioniert, um / dev / null auf CentOS 7 wiederherzustellen, nur um andere wissen zu lassen.
Bozzy
32

Unter vielen herkömmlichen Unices können Sie mit dem MAKEDEVSkript Geräte mit ihren Standardberechtigungen neu erstellen . Dieses Skript ist traditionell in Ubuntu enthalten /dev, befindet sich aber in /sbinUbuntu. Übergeben Sie ein Argument, das angibt, welche Geräte Sie erstellen möchten. auf Ubuntu ist das std(du kannst auch schreiben MAKEDEV null, das schafft nullso gut wie eine Reihe anderer Geräte).

Unter modernen Linux - Systemen mit udev , können Sie udev sagen alle oder einige Geräte basierend auf verfügbaren Treiber und angeschlossene Hardware zu erstellen, durch udevadm trigger:

udevadm trigger --sysname-match=null
Gilles
quelle
Ist diese Antwort noch aktuell? Ich bin auf CentOS 7 und habe gerade aus Versehen mein / dev / null überschrieben, der udevadm trigger --sysname-match=nullTrick hat bei mir nicht funktioniert, während mknod -m 0666 /dev/null c 1 3er perfekt funktioniert hat.
Bozzy
@Bozzy Ich weiß, dass es mit dem Pre-Systemd udev funktioniert hat. Ich habe es in letzter Zeit nicht versucht, aber soweit ich weiß, sollte das immer noch funktionieren. Wenn Sie hinzufügen --verbose, wird es aufgelistet /sys/devices/virtual/mem/null ?
Gilles
Ja, es listet das auf. Ich habe versucht, / dev / null auf meinem Dev-Rechner erneut zu überschreiben, aber seltsamerweise kann ich das hier nicht tun, sodass ich jetzt keine eingehendere Analyse durchführen kann ...
Bozzy,