Apakah file / dev / null sebenarnya memiliki ukuran yang tetap?

23

Saya baru tahu bahwa itu /dev/nulladalah file dan bukan direktori.

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

Cody
sumber

Jawaban:

35

/dev/nullsebenarnya bukan file. Ini adalah perangkat karakter !

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

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

Jadi dengan kata-kata mudah: /dev/nullbukan file tetapi perangkat virtual yang dipetakan ke jalur ini dalam sistem file, yang hanya memiliki 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 dapat benar-benar mengatakan bahwa /dev/nullmemiliki ukuran file tertentu, karena ini bukan file biasa pada media penyimpanan apa pun.

Komandan Byte
sumber
Memasukkan? Apa yang disediakannya daftar karakter NUL yang tak ada habisnya?
Jonathon
@ JonathonWisnoski Saya tidak tahu persis dan saya tidak pernah menggunakannya seperti ini, jadi saya hanya bisa memberikan Anda tautan ini ke pertanyaan tentang StackOverflow di mana dijelaskan.
Byte Commander
7
@ JonathonWisnoski, tidak - berperilaku seperti file berukuran nol pada input, sehingga yang pertama membaca darinya melaporkan bahwa file tersebut berada di EOF.
godlygeek
Yap, itu benar.
godlygeek
3
@JonathonWisnoski lihat / dev / nol untuk itu.
Paŭlo Ebermann
16

/dev/nulladalah jenis file khusus yang disebut " file perangkat ".

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

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

Florian Diesch
sumber
Sementara saya menemukan sebagian besar jawaban ini benar (+1), saya pikir itu agak menyesatkan untuk mengatakan bahwa mereka menempati ukuran entri inode. Mereka juga tidak menempati ruang apa pun, jika merujuk pada ruang disk, atau mereka mengambil lebih banyak, jika merujuk pada keseluruhan implementasinya sebagai perangkat karakter.
kos
2
Sama seperti file lain, file perangkat memerlukan inode yang menyimpan pemilik, izin, nomor utama / kecil dan metadata lainnya. Tergantung pada sistem file bagaimana dan di mana inode ini disimpan (Anda dapat menggunakan mknoduntuk membuat file perangkat di mana saja 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 izinkan saya ulangi. Mungkin yang saya tunjukkan itu agak pilih-pilih, jadi maafkan saya untuk itu. Apa yang saya maksudkan adalah bahwa jika Anda menyatakan bahwa setiap perangkat karakter menempati beberapa ruang dalam memori karena entri inode-nya, mungkin Anda ingin menunjukkan bahwa fungsi-fungsi yang harus dipanggil pada baca / tulis pada perangkat tersebut, yang dimuat bersama dengan mereka, lakukan jadi juga.
kos
Apakah benar mengatakan file menempati ruang yang ditempati oleh entri tabel inode? Saya tidak berpikir ini biasanya termasuk dalam apa yang orang - dan orang-orang perangkat lunak telah tulis - artinya ketika mereka berbicara tentang ukuran file. Secara khusus, meminta lsdan dumelaporkan ukuran perangkat khusus karakter seperti /dev/nullatau /dev/randommenghasilkan 0 .
Eliah Kagan
Maaf, tetapi saya menurunkan jawaban ini, karena kecuali seseorang membuktikan saya salah pada apa yang saya katakan (yang mungkin saya), saya masih berpikir bahwa tidak benar untuk menyatakan bahwa perangkat karakter menempati ruang entri inode.
kos