Я читаю 550MB файл в / dev / null и получаю
dd: writing '/dev/null': No space left on device
Я удивлен. Я думал, что / dev / null - это черная дыра, куда вы можете отправлять столько, сколько захотите (потому что это виртуальный фс).
Да, мой диск почти заполнен, когда я получаю эту ошибку. Что я могу сделать, кроме удаления контента с диска?
ls -l /dev/null
-rw-r--r-- 1 root root 0 July 7 21:58 /dev/null
Вместо
crw-rw-rw- 1 root root 1, 3 July 7 02:58 /dev/null
Команда, которую я использую:
time sh -c "dd if=$filename of=/dev/null"
ls -l /dev/null
/dev/null
никогда не должна вызывать эту ошибку, так как на самом деле она нигде ничего не записывает. Вы получаете тот же эффект безtime
? Пожалуйста, опубликуйте выходные данныеstrace dd if=$filename of=/dev/null
(сделайте это с файлом, не содержащим конфиденциальной информации ) или,strace dd if=$filename of=/dev/null
еслиtime
необходимо, чтобы вызвать ошибку.Ответы:
/dev/null
это специальный файл типа символьного устройства. Драйвер для этого символьного устройства игнорирует все, что вы пытаетесь записать на устройство, и запись всегда выполняется успешно. Если запись/dev/null
не удалась, это означает, что вам каким-то образом удалось удалить правильное/dev/null
и заменить его обычным файлом. Вы могли случайно удалить/dev/null
; тогда следующий… >/dev/null
воссоздает его как обычный файл.Запустите
ls -l /dev/null
и убедитесь, что линия выглядит примерно такОно должно начинаться с
crw-rw-rw-
:c
для символьного устройства и разрешений, которые позволяют каждому читать и писать. Файл должен принадлежать пользователю root, хотя это не очень важно. Два номера после владельца и группы обозначают устройство ( основной и вспомогательный номер устройства ). Выше я показываю значения под Linux; разные варианты Unix имеют разные значения. Дата обычно является либо датой установки системы, либо датой последней перезагрузки и не имеет значения.Если вам нужно пересоздать файл, некоторые системы предоставляют
MAKEDEV
команды, либо в PATH root, либо в/dev
. Запуститеcd /dev; ./MAKEDEV std
или что-то вроде этого, чтобы воссоздать стандартные базовые устройства, такие как/dev/null
. Или создайте устройство вручную, указав правильные номера устройств; в Linux этоисточник
/dev/null
в некоторых обстоятельствах удаляет , возможно, что-то вродеtmp_file=$(mktemp); … … … if [ "$mode" = "quiet" ]; then tmp_file=/dev/null; done; … … … rm "$tmp_file"