Файлова система linux


Файлова система Linux. Все пізнається в порівнянні

Чи спостерігали ви, Господа Лінуксоїди, коли вирощений на Windows користувач намагається знайти логічні диски в Linux? Те ще розвага. Отже, як ви, напевно, вже здогадалися, мова піде про файлову систему.

Що таке файли, які є елементами файлової системи? Це не тільки звичайні файли, але і процеси, послідовні порти і канали межпрограммного взаємодії. Така абстракція була введена програмістами для того, щоб при появі, припустимо, нового порту або типу пристрою не винаходити методи доступу до них, а також стандартизувати методи доступу до ресурсів системи. Однак цей підхід іноді призводить (і досить часто) до плутанини. Проте, на сьогоднішній день ми маємо те, що маємо.

Файлова система складається з безлічі частин. Для "збірки" використовується команда mount. Для зберігання списку змонтованих файлових систем існує файл / etc / fstab. Команда mount має безліч параметрів. Якщо ви при ручному введенні не вказується будь-які з них, система намагається отримати їх з даного файлу. Так, при завантаженні системи відбувається автоматичне монтування розділів mount -a. Як ви, напевно, вже здогадалися, cd-rom і floppy також необхідно монтувати. Однак сучасні системи справляються з цим в автоматичному режимі, представляючи ці пристрої як частина кореневої файлової системи. Демонтування проводиться командою umount (повний синтаксис я не наводжу - отримати його можна набравши man mount або man umount). Якщо файлова система "зайнята", тобто будь-який процес пише або Новомосковскет з файлу (в файл), отмонтировать її неможливо. Дізнатися про процеси, які відкрили файли, можна так:
> Fuser -mv / home

Ця команда виведе список номерів (PID) процесів, які відкрили файли:
> Fuser -mv / home
USER PID ACCESS COMMAND
/ Home root 1 .rce. Init

У колонці ACCESS вказується тип звернення до файлів:
f - файл відкритий на читання або запис;
с - до каталогу - поточний каталог процесу;
e - процес в даний момент виконує програму;
r - в файлової системі знаходиться кореневий каталог процесу;
m - процес відображає в пам'яті файл або спільно використовувану бібліотеку.

Інформацію про процес за номером (PID) можна дізнатися наступним чином:
> Ps -fp 7243
UID PID PPID C STIME TTY TIME CMD
Zavr 7243 4417 0 18:19 pts / 3 00:00:00 / bin / bash
fuser має ще кілька цікавих ключів:
> Fuser -v filename - інформація про використання конкретного файлу filename;
> Fuser -k / dir - вбити всі знайдені процеси (використовується з правами root).

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

/ Boot - тут зберігається файл ядра - зазвичай має ім'я vmlinuz;
/ Bin - програми мінімальної працездатності системи;
/ Lib - бібліотеки C;
/ Opt - допоміжні програми;
/ Proc - образи виконуються процесів;
/ Root - початковий каталог root'а;
/ Mnt - сюди монтуються змінні носії (floppy, cd-rom, flash і ін.);
/ Dev - каталог пристроїв (пам'ятаєте, про що говорилося на початку статті?);
/ Etc - каталог конфігураційних файлів (ви ж знаєте, що в LINUX НІ реєстру?);
/ Tmp - каталог тимчасових файлів;
/ Usr - каталог більшості стандартних програм і компонентів;
/ Var - каталог зберігання логів, буферні каталоги;
/ Var / log - логи;
/ Home - каталог домашніх директорій користувачів.

При установці рекомендується створити декілька розділів на диску (природно, додатково, крім розділу підкачки swap і кореневого розділу). Відповідно для / usr, / var, / home. Так простіше контролювати використання жорсткого диска. У Linux є кілька типів файлів (а вірніше, їх сім):

- просто файли (створюється прикладними програмами, видалення> rm);
- каталоги (створення> mkdir, видалення> rmdir (rm -f));
- файли символьних пристроїв (створення> mknod, видалення> rm);
- файли блокових пристроїв (створення> mknod, видалення> rm);
- локальні сокети (створення> socket, видалення> rm);
- іменовані канали (створення> mknod, видалення> rm);
- символічно посилання (створення> ln (-s - для символічного посилання), видалення> rm).

Всього система зберігає близько 40 інформаційних полів. У тому числі і останнім часом зміни атрибутів. Хоча це поле і називається часом останньої зміни (c (change) time), що помилково.

Розберемо висновок останньої команди:
- Тип файлу і режим доступу до нього - дефіс означає, що це звичайний файл.
- rwxr-xr-x - три набори бітів режиму. Порядок наступний: власник, група, інші користувачі. Відповідно r - читання, w - запис, x - виконання. Значить, на даний файл власник має повні права, всі інші - право на читання і виконання.
- Наступне поле - лічильник посилань на файл. Будь-каталог має мінімум дві жорсткі посилання: одну зі спеціального файлу ".", А другу - з кореневого каталогу. Символічні посилання не враховуються.
- Далі йдуть поля з власником і групою. (Тут zavr mentalzavr).
- Після цього - розмір файлу в байтах і дата останньої модифікації.

Вище я наводив лише консольні команди для роботи з файловою системою. Однак зараз існує безліч файлових менеджерів, які здорово допомагають в роботі. У всіх графічних оболонках (будь то KDE або GNOME) існує стандартний файловий менеджер. Однак рекомендую використовувати біліше зручні програми. Розглянемо два з них.

І друга програма - krusader (качайте тут: сайт Вміє працювати як з локальними файловими системами, так і з мережевими (SAMBA, FTP). Природно, архівування / розархівування входить в список функцій обох менеджерів. Як видно з скріншоту, програма схожа на безсмертний TotalCommander . Більш детальний огляд командер і їх можливостей залишимо у веденні їх домашніх сайтів :-).

Сірників Олександр, aka MentALzavR, zavr6 # 64; mail.ru, UIN # 282631844