Как создать / dev / null?

65

Я удалил свой / dev / null. Как я могу восстановить это?

LanceBaynes
источник
6
Однажды я обнаружил, что / dev / null был заменен обычным файлом, в который может писать только root. Я на мгновение подумал, что мне придется переустановить все, но, как упоминалось ниже, восстановление является тривиальным, если вы знаете хитрость.
Стюарт Вудворд
1
Мне удалось удалить / dev / null, так как неправильно запустил мой канал, переворачивая $ и & при запуске команды rm в скрипте. Ой!
flickerfly

Ответы:

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

Используйте эти команды для создания /dev/nullили использования null(4)man-страницы для получения дополнительной помощи.

harish.venkat
источник
5
Для полноты, я бы отметил, что это относится ко всем системам на основе Linux; другие системы могут иметь разные номера.
Random832
2
Также это только устанавливает сам файл устройства, он не будет восстанавливать свои разрешения. Вам придется это делать chmod go+wвручную.
Аттила О.
7
Число зверя!
wefwefa3
7
mknod -m 0666 /dev/null c 1 3- то же самое, но короче
fnkr
1
mknod -m 0666 /dev/null c 1 3отлично работал, чтобы восстановить / dev / null на CentOS 7, просто чтобы другие знали.
Пьяный
32

Под многими традиционными объединениями вы можете воссоздать устройства со своими разрешениями по умолчанию с помощью MAKEDEVсценария . Этот скрипт традиционно включен, /devно есть в /sbinUbuntu. Передайте ему аргумент, который указывает, какие устройства вы хотите создать; на Ubuntu это std(вы также можете написать MAKEDEV null, что создает, nullа также ряд других устройств).

В современных системах Linux, на которых работает udev , вы можете указать udev воссоздать все или некоторые устройства на основе доступных драйверов и подключенного оборудования с помощью udevadm trigger:

udevadm trigger --sysname-match=null
Жиль "ТАК - перестань быть злым"
источник
Этот ответ все еще актуален? Я нахожусь на CentOS 7, и я просто переписал мой / dev / null по ошибке, udevadm trigger --sysname-match=nullтрюк не сработал для меня, хотя mknod -m 0666 /dev/null c 1 3работал отлично.
Пьяный
@ Боззи: я знаю, что он работал с pre-systemd udev. Я не пробовал в последнее время, но, насколько я знаю, это все еще должно работать. Если вы добавите --verbose, это список /sys/devices/virtual/mem/null ?
Жиль "ТАК - прекрати быть злым"
Да, это перечисляет это. Я попытался перезаписать снова / dev / null на своем компьютере разработчика, но, как ни странно, я не могу сделать это здесь, поэтому я не могу сейчас сделать более углубленный анализ ...
Bozzy