Лекція №6 - каталоги
Лекція №6 - каталоги / proc, / sys. Блокові і символьні файли-пристрої
Все, з чого складається операційна система Linux - це файли. Каталоги (папки, директорії) - це теж файли, тільки іншого типу. У цій лекції ми познайомимося докладніше з так званими файлами-пристроями .Файли-пристрої відображають в системі апаратні компоненти системи та дозволяють встановлювати зв'язок із ними.
Файли-пристрої діляться на два типи: блокові і символьні. Ще можна зустріти в літературі блочно-орієнтовані і байт-орієнтовані. Відмінності між типами в способі "спілкування" з компонентами. З блочними файлами-пристроями обмін інформацією йде порціями або блоками. Типовим блоковим пристроєм є жорсткий диск. Також слід зазначити, що інформацію можна отримати з будь-якої частини блочного файлу-пристрої. З символьними файлами-пристроями обмін інформацією йде послідовно. Приклад такого пристрою - com-порт.
Виконайте команду ls / dev / і подивіться на результат. Ви якраз і побачите файли-пристрої властиві вашій аппаратоной конфігурації. Розглянемо спочатку символьні файли-пристрої. Я вже згадував про такі пристрої як tty (консоль) і ttyS0 (порт com1). Аudio. dsp. mixer - файл-пристрої відображають звукову карту. Віртуальні пристрої random і urandom - дозволяють генерувати псевдовипадкові числа. Причому пристрій urandom генерує послідовність виключно математичними методами, аrandom використовує для генерації так званий "шум", який геніріруется в процесі роботи различнимі апаратними компонентами. Увійдіть у другій і третій консолі. Наберіть в другій консолі команду hexdump / dev / random. Ви повинні побачити шістнадцяткові числа. Почекайте деякий час і ви побачите як кількість чисел зростає. Щоб прискорити процес можете перейти на третю консоль і натискати на клавіші. Поверніться на другу консоль і перервіть виконання команди hexdump комбінацією клавіш ctrl + C. Наберіть тепер команду hexdump / dev / urandom і побачите як послідовність чисел генерується дуже швидко, так як використовуються тільки математичні методи генерації послідовності.
Ще два цікавих файлу-пристрої це zero і null. zero - постійно видає нулі. Це може бути потрібно наприклад, якщо потрібно очистити жорсткий диск. Для цього можна використовувати команду dd if = / dev / zero of = / dev / sdc. Тільки не потрібно виконувати цю команду на своєму робочому диску. Що робить ця команда? Як вхідні дані (if - input file), використовується інформація з / dev / zero (тобто нулі), в якості приймача даних (of - output file) використовується жорсткий диск. В результаті виконання весь диск заповнитися нулями. Null - не містить в собі нічого. І запис в цей пристрій - це запис в нікуди. Це може бути корисно якщо ми хочемо щоб, інформація видається командами не висвітлюється на консолі. Наприклад, команда echo Hello!> / Dev / null не відобразяться на консолі слово Hello. так як висновок перенаправлений в / dev / null.
Давайте виконаємо команду mount без параметрів, щоб подивитися які пристрої у нас змонтовані і з якими файловими системами. Нас цікавить рядок відноситься до каталогу / proc. Виглядає вона приблизно так: proc on / proc type proc (rw). Як можете бачити файлову систему тут називається proc. Це віртуальна файлова система, в якій відображаються файли-процеси. Цю віртуальну файлову сістемуLinux створює в віртуальної пам'яті, тому на жорсткому диску вона не займає місце, та й багато файли в пам'яті також не займають місце так як насправді не містять в собі інформації. Виконайте команду df -ha і переконайтеся, що дійсно каталог / proc займає 0 байт простору. Хоча інформацію можна отримати по команді cat (less). але насправді інформація ця генерується ядром на льоту - cat / proc / cpuinfo. Тобто / proc / cpuinfo - це не текстовий файл. Іншими словами через файли містяться в каталозі / proc ми отримуємо доступ до різними статистичними (і не тільки) даними ядра. Наприклад, командаcat / proc / net / dev покаже статистичну інформацію по мережевих пристроїв - кількість прийнятих / переданих байт і пакетів і іншу. А команда cat / proc / sys / net / ipv4 / ip_forward - покаже чи дозволено в нашій системі пересилання (форвардного) пакетів. Більшість файлів в каталозі / proc доступні тільки для читання, але є і такі які доступні для запису (для користувача root). Файл ip_forward якраз відноситься до останніх. Якщо у вас там 0, то форвардного відключений. Але ми можемо включити його в такий спосіб (в деяких дистрибутивах такі операції не пройдуть): echo 1> / proc / sys / net / ipv4 / ip_forward. За цією командою ми змінимо вміст з 0 на 1 і тим самим дозволимо форвардного (після перезавантаження системи знову буде 0). За командою ls / proc / ви можете побачити багато директорій з числовим ім'ям. Ці імена відповідають ідентифікаторів процесів запущених в системі. У кожній такій папці міститься різноманітна інформація про процес. Детальніше можна ознайомитись набравши man 5 proc.
Каталог / sys має свою файлову систему sysfs. У чомусь вміст каталогу (за призначенням) / sys схоже з каталогом / proc. Основна відмінність в тому, що файли в / sys описують реальну конфігурацію комп'ютера на поточний момент. / Sys дуже тісно пов'язаний з udev якщо ви підключаєте (відключаєте) пристрої, вміст каталогу / sys динамічно змінюється. Можна подивитися на прикладі. Виконайте команду ls / sys / bus / usb / devices /. щоб подивитися поточні usb-пристрої в системі. Тепер підключіть флеш-накопичувач і виконайте команду ls / sys / bus / usb / devices / ще раз. Ви побачите, що тепер пристроїв стало більше.
Ще раз хочу звернути увагу на те, що вміст директорій / proc та / sys формується ядром на етапі завантаження. Завантажити з будь-якого LiveCD диска зайдіть в директорії / proc та / sys на вашому диску і переконайтеся, що вони порожні.
На наступній лекції поговоримо про регулярні файлах і линках.