Назначение / dev / zero?


49

Я пытался cat /dev/zero, и это, похоже, ничего не делало. Я гуглил /dev/zero, и он говорит, что это в основном пустой файл с бесконечным размером. Является ли catпечать бесконечным числом несуществующих символов? Как это работает? Как это обеспечивает бесконечные данные, если это 0 байтов? Какая польза от этого файла, если можно просто создать пустой файл?


11
Беги, cat -v /dev/zeroчтобы посмотреть, что он делает. См. Очистка неиспользуемого пространства с нулями (ext3, ext4) для общей цели.
Манатворк

Существует также / dev / null, который ведет себя как пустой файл, если вы хотите его прочитать, и как черная дыра, если вы пишете в него.
Джофель

@jofel, но вы не можете использовать / dev / null для бесконечных 0 битов, верно? cat foo > /dev/nullи cat foo > /dev/zeroодинаковы, но cat /dev/nullи cat /dev/zeroне одинаковы ли, верно?
tkbx

@tkbx да, правильно. /dev/nullнемедленно возвращает EOF, если программа хочет прочитать с него. /dev/zeroвозвращает бесконечно 0 байтов.
Джофель

Ответы:


53

/dev/zeroспециальный файл (в данном случае псевдоустройство), который предоставляет бесконечный поток нулевых символов (например, hex 0x00)? Вот почему ваш catничего не выводит (но попробуйте запустить его через od(восьмеричный дамп)).

«Пустой файл с бесконечным размером» не является на 100% правильным: это не обычный файл, а специальный файл (больше похожий на «поток» или генератор). Вы можете читать из него столько, сколько хотите, например, с помощью dd(вроде dd if=/dev/zero of=yourfile count=1024 bs=1024).

На самом деле это не пустой файл и не используется для создания пустых файлов: он используется для создания файлов или страниц памяти, заполненных только нулями. Вы также можете писать в него, заставляя его работать как провал ( /dev/nullхотя для этого чаще используется его более популярный брат ).


Почему кто-то хочет заполнить пустое пространство, хотя?
tkbx

5
Например, стереть то, что было раньше. Или при передаче.
Конерак

4
Я не читал srmруководство или источник, но большинство «безопасных ластиков» предпочитают записывать (псевдо-) случайные данные вместо обнуления диска, поскольку один проход обнуления недостаточно безопасен (некоторые трехбуквенные агентства все еще может вычесть исходное содержимое обнуленного жесткого диска, так как отдельные биты не на 100% истинно 1 или 0, а просто «в основном 1» или «в основном 0». Сравните его с рычагом, который можно поставить «до конца» "или" все в порядке ", но обычно достаточно простого поворота на другую сторону.
Конерак

11
@tkbx, пытаясь ddсоздать раздел, вы можете захотеть заполнить все пустое пространство до 0, а не случайным образом, чтобы позже получить сжатый файл меньшего размера.
неврино

1
@ Konerak Я довольно подозрительно отношусь к этому. Я слышал об этом повсюду, и я ни разу не видел доказательств того, что это возможно на каком-то отдаленно новом жестком диске (сделанном, по крайней мере, за последние 10 лет).
Роб
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.