Домашня » як » Що означає «все це файл» у Linux?

    Що означає «все це файл» у Linux?

    Однією з визначальних особливостей Linux та інших UNIX-подібних операційних систем є те, що "все є файлом". Це спрощення, але розуміння того, що це означає, допоможе вам зрозуміти, як працює Linux.

    Багато речей у Linux з'являються у вашій файловій системі, але вони насправді не є файлами. Це спеціальні файли, які представляють апаратні пристрої, системну інформацію та інші речі - включаючи генератор випадкових чисел.

    Ці спеціальні файли можуть бути розташовані в псевдо-або віртуальних файлових системах, таких як / dev, який містить спеціальні файли, які представляють пристрої, і / proc, який містить спеціальні файли, які представляють інформацію про систему та інформацію про процес.

    / proc

    Наприклад, скажімо, ви хочете знайти інформацію про процесор. Каталог / proc містить спеціальний файл - / proc / cpuinfo - який містить цю інформацію.

    Вам не потрібна спеціальна команда, яка повідомляє вам інформацію про процесор - ви можете просто прочитати вміст цього файлу за допомогою будь-якої стандартної команди, яка працює з текстовими файлами. Наприклад, можна скористатися командою cat / proc / cpuinfo друк вмісту цього файлу на термінал - друк інформації про процесор в терміналі. Можна навіть відкрити / proc / cpuinfo у текстовому редакторі, щоб переглянути його вміст.

    Пам'ятайте, що / proc / cpuinfo насправді не є текстовим файлом, що містить цю інформацію - ядро ​​Linux і файлова система proc надають нам цю інформацію як файл. Це дозволяє нам використовувати знайомі інструменти для перегляду та роботи з інформацією.

    Каталог / proc також містить інші подібні файли, наприклад:

    • / proc / uptime - Виявляє час безвідмовної роботи вашого ядра Linux - іншими словами, як довго працює ваша система без вимикання.
    • / proc / version - Виводить версію ядра Linux.

    / dev

    У каталозі / dev ви знайдете файли, що представляють пристрої, а також файли, що представляють інші спеціальні речі. Наприклад, / dev / cdrom - це ваш привід CD-ROM. / dev / sda представляє ваш перший жорсткий диск, а / dev / sda1 - перший розділ вашого першого жорсткого диска.

    Хочете встановити компакт-диск? Запустіть команду монтування і вкажіть / dev / cdrom як пристрій, який потрібно встановити. Хочете розділити свій перший жорсткий диск? Запустіть утиліту розбиття на диск і вкажіть / dev / sda як жорсткий диск, який потрібно редагувати. Хочете форматувати перший розділ на першому жорсткому диску? Запустіть команду форматування і скажіть, щоб він відформатував / dev / sda1.

    Як бачите, виставлення цих пристроїв як частини файлової системи має свої переваги. Файлова система забезпечує послідовне "простір імен", яке всі програми можуть використовувати для адреси та доступу до пристроїв.

    / dev / null, / dev / random і / dev / zero

    Файлова система / dev не містить тільки файли, що представляють фізичні пристрої. Ось три найбільш помітних спеціальних пристрою, які він містить:

    • / dev / null - Відкидає всі дані, записані на ньому, - вважають це кошиком або чорною дірою. Якщо ви коли-небудь побачите коментар, який повідомляє вам про те, щоб відправити скарги до / dev / null - це вигадливий спосіб сказати "викинути їх у кошик".
    • / dev / random - Виробляє випадковість, використовуючи екологічний шум. Це генератор випадкових чисел.
    • / dev / zero - виробляє нулі - постійний потік нулів.

    Якщо ви думаєте про ці три файли, ви не побачите їх використання. Замість цього подумайте про них як про інструменти.

    Наприклад, за замовчуванням команди Linux створюють повідомлення про помилки та інший вихід, який вони друкують на стандартний вивід, як правило, термінал. Якщо ви хочете запустити команду і не піклуються про її вивід, ви можете перенаправити цей вивід на / dev / null. Переадресація виводу команди на / dev / null негайно відкидає її. Замість того, щоб кожна команда реалізувала свій власний «тихий режим», ви можете використовувати цей метод з будь-якою командою.

    команда> / dev / null

    Якщо ви хочете джерело випадковості - скажімо, для створення ключа шифрування, вам не потрібно писати власний генератор випадкових чисел - ви можете використовувати / dev / random.

    Щоб видалити вміст жорсткого диска, записавши 0 до нього, вам не потрібна спеціальна утиліта, присвячена нулю диска - ви можете використовувати стандартні утиліти та / dev / zero. Наприклад, dd Команда читає з місця і записує в інше місце. Наступна команда буде читати нулі з / dev / zero і записувати їх безпосередньо на перший розділ жорсткого диска вашої системи, повністю стираючи її вміст.

    (Увага: Ця команда видалить усі дані з вашого першого розділу, якщо ви запустите його. Запускайте цю команду, лише якщо ви хочете знищити дані.)

    dd, якщо = / dev / zero = / dev / sda1

    Тут ми використовуємо dd з спеціальними файлами (/ dev / zero та / dev / sda1), але ми також можемо використовувати dd для читання і запису у фактичні файли. Така ж команда працює як для маніпулювання пристроями безпосередньо, так і для роботи з файлами.

    Роз'яснення

    На практиці точніше сказати, що "все є потоком байтів", ніж "все є файлом." І, хоча ці речі технічно не є файлами, вони доступні у файловій системі - файлова система є універсальним "простором імен", де все доступно. Хочете отримати доступ до генератора випадкових чисел або прочитати безпосередньо з пристрою? Ви знайдете як у файловій системі; жодна інша форма звернення не потрібна.

    Звичайно, деякі речі насправді не є файлами - процеси, запущені у вашій системі, не є частиною файлової системи. "Все є файлом" є неточним, але багато речей ведуть себе як файли.