Pertanyaan Apakah file / dev / null benar-benar memiliki ukuran yang tetap?


Saya baru saja menemukan itu /dev/null adalah file dan bukan direktori.

Saya hanya ingin tahu apakah itu memiliki ukuran file yang sebenarnya.


23
2018-04-10 18:00


asal




Jawaban:


/dev/null sebenarnya bukan file. Itu a perangkat karakter!

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

Huruf pertama c dari string izin (crw-rw-rw-) menunjukkan ini. Untuk file biasa, itu akan menjadi file a - sebagai gantinya.

Jadi dengan kata-kata mudah: /dev/null bukan file tetapi perangkat virtual yang dipetakan ke jalur ini dalam sistem file, yang memiliki satu-satunya tujuan untuk menelan dan menghapus data - seperti lubang hitam.
Ini juga dapat digunakan sebagai input, kemudian bertindak seperti file kosong (ukuran 0) dan segera mengembalikan EOF (End Of File).

Karena itu Anda tidak bisa benar-benar mengatakan itu /dev/null memiliki ukuran file tertentu, karena ini bukan file biasa pada media penyimpanan apa pun.


35
2018-04-10 18:19



Memasukkan? Apa yang menyediakan daftar karakter NUL tanpa henti? - Jonathon
@JonathonWisnoski Saya tidak tahu persis dan saya tidak pernah menggunakannya seperti ini, jadi saya hanya bisa memberi Anda tautan ini ke pertanyaan di StackOverflow dimana itu dijelaskan. - Byte Commander
@JonathonWisnoski, tidak - itu berperilaku seperti file berukuran nol pada input, sehingga bacaan pertama dari laporannya bahwa file tersebut di EOF. - godlygeek
Ya, itu benar. - godlygeek
@JonathonWisnoski melihat / dev / zero untuk itu. - Paŭlo Ebermann


/dev/null adalah jenis file khusus yang disebut "file perangkat".

File perangkat berfungsi sebagai antarmuka untuk beberapa fungsi kernel. Mereka hanya menempati ruang yang diperlukan untuk entri direktori ("inode") tetapi tidak memiliki konten asli dan tidak memiliki ukuran file yang sebenarnya.

File perangkat lain misalnya /dev/sda (biasanya HDD atau SSD), /dev/zero (file yang menghasilkan nol ketika dibaca), atau /dev/random (file yang menghasilkan data acak saat dibaca). Sebenarnya tentang semua file dalam /dev/ adalah file perangkat atau tautan yang menunjuk ke file perangkat.


16
2018-04-10 18:23



Sementara saya menemukan sebagian besar jawaban ini benar (+1), saya pikir itu sedikit menyesatkan untuk mengatakan bahwa mereka menempati ukuran entri inode. Mereka juga tidak menempati ruang apa pun, jika mengacu pada ruang disk, atau mereka mengambil lebih banyak, jika mengacu pada keseluruhan implementasi mereka sebagai perangkat karakter. - kos
Sama seperti file lainnya, file perangkat membutuhkan inode yang menyimpan pemilik, izin, nomor utama / kecil dan metadata lainnya. Itu tergantung pada sistem file bagaimana dan di mana inode ini disimpan (dapat Anda gunakan mknod untuk membuat file perangkat di mana saja yang Anda inginkan). Untuk sistem file virtual seperti /dev/ inode tidak menempati ruang disk tetapi beberapa memori. - Florian Diesch
Persis. Saya pikir saya tidak mengekspresikan diri dengan baik, jadi biarkan saya ulangi. Mungkin apa yang saya tunjukkan itu sedikit pilih-pilih, jadi maafkan saya untuk itu. Yang saya maksudkan adalah bahwa jika Anda menyatakan bahwa setiap perangkat karakter menempati beberapa ruang dalam memori karena entri inode, mungkin Anda ingin menunjukkan bahwa fungsi dipanggil membaca / menulis pada perangkat tersebut, yang dimuat bersama dengan mereka, lakukan jadi juga. - kos
Apakah benar untuk mengatakan file menempati ruang yang ditempati oleh entri tabel inodenya? Saya tidak berpikir ini biasanya termasuk dalam apa yang orang - dan perangkat lunak orang tulis - maksud ketika mereka berbicara tentang ukuran file. Khususnya, meminta ls dan du untuk melaporkan ukuran perangkat khusus karakter seperti /dev/null atau /dev/random menghasilkan 0. - Eliah Kagan
Maaf, tapi saya membatalkan suara jawaban ini, karena kecuali seseorang membuktikan saya salah pada apa yang saya katakan (yang mungkin saya), saya masih berpikir bahwa itu tidak benar untuk menyatakan bahwa perangkat karakter menempati ruang entri inode. - kos