Чи дійсно файл / dev / null має фіксований розмір?


23

Я щойно з’ясував, що /dev/nullце файл, а не каталог.

Мені просто цікаво, чи має він фактичний розмір файлу.

Відповіді:


35

/dev/nullнасправді не файл. Це персонаж пристрою !

$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Apr 10 09:53 /dev/null

Перша літера cрядка дозволів ( crw-rw-rw-) вказує на це. Для звичайних файлів це було б -замість цього.

Так простими словами: /dev/nullце не файл, а віртуальний пристрій, відображений на цьому шляху у файловій системі, який має єдину мету проковтнути та зникнути дані - як чорна діра.
Він також може бути використаний як вхідний файл, тоді він діє як порожній файл (розмір 0) і негайно повертає EOF (End Of File).

Тому ви не можете сказати, що він /dev/nullмає певний розмір файлу, оскільки це не звичайний файл на будь-якому носії.


Вхід? Що надає нескінченний список символів NUL?
Джонатан

@JonathonWisnoski Я точно не знаю і ніколи не використовував це так, тому я можу просто надати вам це посилання на запитання на StackOverflow, де це пояснено.
Байт-командир

7
@JonathonWisnoski, ні - він поводиться як файл нульового розміру на вході, так що перший прочитаний з нього повідомляє, що файл знаходиться в EOF.
godlygeek

Так, це правильно.
godlygeek

3
@JonathonWisnoski дивіться на / dev / zero для цього.
Paŭlo Ebermann

16

/dev/null- це особливий вид файлу, який називається " файл пристрою ".

Файли пристроїв виконують функції інтерфейсу деяких функцій ядра. Вони просто займають простір, необхідний для введення в каталог (" inode "), але не мають реального вмісту і не мають фактичного розміру файлу.

Іншими файлами пристрою є, наприклад, /dev/sda(як правило, жорсткий диск або SSD), /dev/zero(файл, який створює нулі при зчитуванні) або /dev/random(файл, який генерує випадкові дані при зчитуванні). Насправді про всі файли у файлах /dev/є або файли пристрою, або посилання, що вказують на файли пристрою.


Хоча я вважаю більшість цієї відповіді правильною (+1), я вважаю, що трохи оманливо сказати, що вони займають розмір запису inode. Вони або не займають жодного місця, якщо йдеться про місце на диску, або займають більше, якщо посилаються на всю їхню реалізацію як символьні пристрої.
kos

2
Як і будь-який інший файл, для пристрою потрібен інод, який зберігає власника, дозволи, основне / другорядне число та інші метадані. Від файлової системи залежить, як і де зберігаються ці вкладиші (ви можете використовувати mknodфайли пристроїв у будь-якому місці). Для віртуальних файлових систем, таких /dev/як inode, не займають дисковий простір, а деяку пам’ять.
Флоріан Дієш

Саме так. Я думаю, що я не проявив себе добре, тому дозволь перефразовувати. Можливо, те, що я вказую, це трохи прискіпливо, тому вибачте мені за це. Я мав на увазі те, що якщо ви заявляєте, що кожен пристрій символів займає певний простір в пам'яті через його введення inode, можливо, ви хочете вказати, що функції, які потрібно викликати для читання / запису на такому пристрої, які завантажуються разом з ними, роблять так само.
kos

Чи дійсно правильно сказати, що файл займає простір, зайнятий його записом таблиці inode? Я не думаю, що це зазвичай включається в те, що люди - і програмне забезпечення, які люди написали - означають, коли вони говорять про розмір файлу. Зокрема, запитуючи lsта duповідомляти про розмір символу спеціального пристрою типу " 0" /dev/nullабо " /dev/random0" .
Елія Каган

Вибачте, але я відповів на цю відповідь, тому що якщо хтось не докаже мені неправильно щодо того, що я сказав (що я міг би бути), я все ще вважаю, що невірно стверджувати, що символьний пристрій займає простір вводу inode.
кос
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.