If-Koubou

Apa yang dimaksud dengan “Everything Is a File” di Linux?

Apa yang dimaksud dengan “Everything Is a File” di Linux? (Bagaimana caranya)

Salah satu fitur mendefinisikan Linux dan sistem operasi UNIX-like lainnya adalah bahwa "semuanya adalah file." Ini adalah penyederhanaan, tetapi memahami apa artinya akan membantu Anda memahami bagaimana Linux bekerja.

Banyak hal di Linux muncul di sistem file Anda, tetapi sebenarnya bukan file. Mereka adalah file khusus yang mewakili perangkat keras, informasi sistem, dan hal-hal lain - termasuk generator nomor acak.

File-file khusus ini mungkin terletak di sistem file semu atau virtual seperti / dev, yang berisi file khusus yang mewakili perangkat, dan / proc, yang berisi file khusus yang mewakili sistem dan informasi proses.

/ proc

Misalnya, katakanlah Anda ingin mencari informasi tentang CPU Anda. Direktori / proc berisi file khusus - / proc / cpuinfo - yang berisi informasi ini.

Anda tidak memerlukan perintah khusus yang memberi tahu Anda info CPU - Anda dapat membaca isi file ini menggunakan perintah standar yang berfungsi dengan file teks biasa. Misalnya, Anda bisa menggunakan perintah kucing / proc / cpuinfo untuk mencetak isi file ini ke terminal - mencetak informasi CPU Anda ke terminal. Anda bahkan bisa membuka / proc / cpuinfo di editor teks untuk melihat isinya.

Ingat, / proc / cpuinfo sebenarnya bukan file teks yang berisi informasi ini - kernel Linux dan sistem file proc mengekspos informasi ini kepada kita sebagai file. Ini memungkinkan kami untuk menggunakan alat yang sudah dikenal untuk melihat dan bekerja dengan informasi tersebut.

Direktori / proc juga berisi file lain yang serupa, misalnya:

  • / proc / uptime - Mengekspos uptime kernel Linux Anda - dengan kata lain, berapa lama sistem Anda telah aktif tanpa mematikan.
  • / proc / version - Menampilkan versi kernel Linux Anda.

/ dev

Di direktori / dev, Anda akan menemukan file yang mewakili perangkat - serta file yang mewakili hal-hal khusus lainnya. Misalnya, / dev / cdrom adalah drive CD-ROM Anda. / dev / sda mewakili hard drive pertama Anda, sementara / dev / sda1 mewakili partisi pertama pada hard drive pertama Anda.

Ingin memasang CD-ROM Anda? Jalankan perintah mount dan tentukan / dev / cdrom sebagai perangkat yang ingin Anda mount. Ingin mempartisi hard drive pertama Anda? Jalankan utilitas partisi-disk dan tentukan / dev / sda sebagai hard disk yang ingin Anda edit. Ingin memformat partisi pertama di hard drive pertama Anda? Jalankan perintah format dan kirim ke format / dev / sda1.

Seperti yang Anda lihat, mengekspos perangkat ini sebagai bagian dari sistem file memiliki kelebihannya. Sistem file menyediakan "ruang nama" yang konsisten yang dapat digunakan oleh semua aplikasi untuk mengatasi dan mengakses perangkat.

/ dev / null, / dev / random, dan / dev / zero

Sistem file / dev tidak hanya berisi file yang mewakili perangkat fisik. Berikut adalah tiga perangkat khusus yang paling terkenal yang dikandungnya:

  • / dev / null - Membuang semua data yang dituliskan padanya - menganggapnya sebagai tempat sampah atau lubang hitam. Jika Anda pernah melihat komentar yang memberi tahu Anda untuk mengirim keluhan ke / dev / null - itu adalah cara yang aneh untuk mengatakan "buang mereka ke tempat sampah."
  • / dev / random - Menghasilkan keacakan menggunakan kebisingan lingkungan. Ini adalah generator nomor acak yang bisa Anda gunakan.
  • / dev / zero - Menghasilkan nol - aliran konstan nol.

Jika Anda menganggap ketiga file ini sebagai file, Anda tidak akan melihat penggunaannya. Sebaliknya, pikirkan mereka sebagai alat.

Sebagai contoh, secara default, perintah Linux menghasilkan pesan kesalahan dan output lain yang mereka cetak ke output standar, biasanya terminal. Jika Anda ingin menjalankan perintah dan tidak peduli dengan outputnya, Anda dapat mengarahkan output itu ke / dev / null. Mengarahkan output perintah ke / dev / null segera membuangnya. Daripada memiliki setiap perintah, terapkan "mode tenang" -nya sendiri, Anda dapat menggunakan metode ini dengan perintah apa pun.

perintah> / dev / null

Jika Anda menginginkan sumber keacakan - katakanlah, untuk menghasilkan kunci enkripsi, Anda tidak perlu menulis pembuat nomor acak Anda sendiri - Anda dapat menggunakan / dev / acak.

Untuk menghapus isi hard drive dengan menulis 0 untuk itu, Anda tidak perlu utilitas khusus yang didedikasikan untuk zero'ing drive - Anda bisa menggunakan utilitas standar dan / dev / nol. Misalnya, DD perintah membaca dari suatu lokasi dan menulis ke lokasi lain. Perintah berikut ini akan membaca nol dari / dev / nol dan menulisnya langsung ke partisi hard disk pertama di sistem Anda, benar-benar menghapus isinya.

(Peringatan: Perintah ini akan menghapus semua data pada partisi pertama Anda jika Anda menjalankannya. Hanya jalankan perintah ini jika Anda ingin menghancurkan data.)

dd if = / dev / nol = / dev / sda1

Di sini kami menggunakan dd dengan file khusus (/ dev / nol dan / dev / sda1), tetapi kami juga bisa menggunakan dd untuk membaca dari dan menulis ke file yang sebenarnya. Perintah yang sama berfungsi baik untuk memanipulasi perangkat secara langsung dan bekerja dengan file.

Klarifikasi

Dalam prakteknya, ini lebih akurat untuk mengatakan bahwa "semuanya adalah aliran byte" daripada "semuanya adalah file." / Dev / random bukanlah sebuah file, tetapi tentu saja adalah aliran byte. Dan, meskipun hal-hal ini secara teknis bukan file, mereka dapat diakses dalam sistem file - sistem file adalah "ruang nama" universal di mana semuanya dapat diakses. Ingin mengakses generator nomor acak atau membaca langsung dari perangkat? Anda akan menemukan keduanya di sistem file; tidak ada bentuk lain dari pengalamatan yang dibutuhkan.

Tentu saja, beberapa hal sebenarnya bukan file - proses yang berjalan di sistem Anda bukan bagian dari sistem file. "Semuanya adalah file" tidak akurat, tetapi banyak hal berperilaku sebagai file.