Jak stworzyć / dev / null?

65

Usunąłem / dev / null. Jak mogę go przywrócić?

LanceBaynes
źródło
6
Kiedyś odkryłem, że / dev / null został zastąpiony normalnym plikiem, do którego tylko root mógł pisać. Przez chwilę myślałem, że będę musiał ponownie zainstalować wszystko, ale jak wspomniano poniżej, odzyskiwanie jest proste, jeśli znasz tę sztuczkę.
Stuart Woodward
1
Udało mi się usunąć / dev / null, błędnie odwracając moją rurkę $ i & podczas uruchamiania polecenia rm w skrypcie. Ojej!
flickerfly

Odpowiedzi:

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

Użyj tych poleceń, aby utworzyć stronę pomocy /dev/nulllub skorzystać null(4)z niej w celu uzyskania dalszej pomocy.

harish.venkat
źródło
5
Dla kompletności chciałbym zauważyć, że dotyczy to wszystkich systemów opartych na systemie Linux; inne systemy mogą mieć różne numery.
Random832,
2
To tylko konfiguruje sam plik urządzenia, nie przywróci uprawnień. Musisz to chmod go+wzrobić ręcznie.
Attila O.
7
Numer bestii!
wefwefa3
7
mknod -m 0666 /dev/null c 1 3- to samo, ale krócej
fnkr
1
mknod -m 0666 /dev/null c 1 3działał idealnie, aby przywrócić / dev / null na CentOS 7, tylko po to, aby poinformować innych.
Bozzy
32

W wielu tradycyjnych jednorożcach możesz ponownie tworzyć urządzenia z domyślnymi uprawnieniami za pomocą MAKEDEVskryptu . Ten skrypt jest tradycyjnie dostępny /devw /sbinUbuntu. Przekaż mu argument wskazujący, jakie urządzenia chcesz utworzyć; na Ubuntu, który std(możesz także pisać MAKEDEV null, który tworzy, nulla także wiele innych urządzeń).

W nowoczesnych systemach Linux z systemem udev możesz nakazać udev odtworzenie wszystkich lub niektórych urządzeń w oparciu o dostępne sterowniki i podłączony sprzęt, poprzez udevadm trigger:

udevadm trigger --sysname-match=null
Gilles
źródło
Czy ta odpowiedź jest wciąż aktualna? Korzystam z CentOS 7 i właśnie przez pomyłkę nadpisałem / dev / null, udevadm trigger --sysname-match=nullsztuczka nie działała dla mnie, a mknod -m 0666 /dev/null c 1 3działała idealnie.
Bozzy
@Bozzy Wiem, że to działało z pre-systemd udev. Nie próbowałem ostatnio, ale o ile wiem, to powinno nadal działać. Jeśli dodasz --verbose, czy to lista /sys/devices/virtual/mem/null ?
Gilles
Tak, to wymienia. Próbowałem ponownie nadpisać / dev / null na mojej maszynie deweloperskiej, ale o dziwo nie jestem w stanie tego tutaj zrobić, więc nie mogę teraz przeprowadzić bardziej szczegółowej analizy ...
Bozzy