Przejdź do treści
Lekcja 8 z 117

Kurs › Moduł 1 › Lekcja 8

Mapa Linuksa: co leży w którym folderze

⏱ ok. 7 min czytania· moduł 1: Praca w powłoce

Po tej lekcji: kursant wie, do czego służą główne foldery systemu, gdzie szukać ustawień, logów, programów i danych, i rozumie zasadę „wszystko jest plikiem”.

Wstęp

ls /, a pod spodem dwadzieścia tajemniczych nazw: bin, etc, usr, var, proc…

Pierwszy raz wpisujesz ls / i widzisz to. etc. Jakby ktoś zaczął wymieniać i mu się znudziło. usr, jakby zabrakło litery. var. proc. Wygląda jak szuflada, do której ktoś przez pięćdziesiąt lat wrzucał rzeczy bez etykiet.

A to jest jedna z najlepiej uporządkowanych rzeczy w całym Linuksie. Każdy folder ma swoje zadanie i to zadanie jest takie samo na Ubuntu, Red Hacie, Debianie i serwerze w banku. Jak raz poznasz tę mapę, na każdym obcym serwerze w pięć sekund wiesz, gdzie są ustawienia, gdzie logi, a gdzie dane.

Jeden budynek, jeden plan

W Windowsie masz dyski: C:, D:, pendrive to E:. W Linuksie nie ma liter. Jest jedno drzewo, które zaczyna się od /, i wszystko jest gdzieś w nim. Nawet drugi dysk albo pendrive są podpięte jako jakiś folder w tym drzewie.

Wracamy do budynku z lekcji 2. Tym razem to biurowiec, a każdy biurowiec na świecie ma ten sam plan: recepcja zawsze na parterze, archiwum zawsze w piwnicy, kotłownia zawsze za tymi samymi drzwiami. Ten plan dla Linuksa ma nazwę: Filesystem Hierarchy Standard, w skrócie FHS. Standard hierarchii systemu plików.

Wycieczka po budynku

/etc — pokój z segregatorami ustawień. Tu leżą ustawienia całego systemu i prawie wszystkich programów. Zwykłe pliki tekstowe. Jak zmienić port serwera WWW, użytkowników, nazwę komputera? Wszystko w /etc. Skąd nazwa? Od „et cetera”, czyli „i tak dalej”. Kiedyś wrzucano tu wszystko, co nie pasowało gdzie indziej. Potem zostały same ustawienia, a nazwa została, bo nikt nie chciał przerabiać połowy świata.

ls /etc
cat /etc/os-release
cat /etc/hostname

/etc/os-release mówi, jaki to system i w jakiej wersji. Pierwsza komenda na każdym obcym serwerze. Jak spojrzenie na tabliczkę z nazwą firmy przy wejściu.

/home — mieszkania użytkowników. Każdy człowiek ma tu swój folder: /home/eryk, /home/ania. Jego pliki, jego ustawienia, jego bałagan.

/root — mieszkanie dyrektora. Folder domowy administratora, czyli użytkownika root. Nie w /home, tylko osobno. Gdyby /home leżało na osobnym dysku i ten dysk padł, administrator dalej ma gdzie wejść.

/var — rzeczy, które ciągle się zmieniają. Od „variable”, zmienne. Najważniejsze piętra:

  • /var/log — logi. Tu admin zagląda najczęściej. Jak coś nie działa, odpowiedź prawie zawsze jest w /var/log.
  • /var/lib — dane programów, na przykład bazy danych.
  • /var/www — strony internetowe, na wielu systemach.
  • /var/cache — rzeczy, które można odtworzyć, na przykład pobrane paczki z programami.
  • /var/spool — kolejki: wydruki do zrobienia, poczta do wysłania, zadania do odpalenia.

/tmp — biurko na korytarzu. Pliki tymczasowe. Każdy może tu coś położyć, ale nikt nie obiecuje, że to rano jeszcze będzie. Wiele systemów czyści /tmp przy restarcie. Kopia zapasowa w /tmp to jak trzymanie oszczędności w kieszeni kurtki oddanej do pralni.

/usr — magazyn programów. Tu leży prawie całe oprogramowanie. /usr/bin to programy, których używasz na co dzień: ls, grep, cat. /usr/sbin to programy dla administratora. /usr/lib to biblioteki, czyli części wspólne, z których korzystają programy. /usr/share to dokumentacja, ikonki, instrukcje.

A nazwa? Kiedyś „usr” znaczyło „user”, bo tu były foldery użytkowników. Potem użytkownicy przeprowadzili się do /home, a usr zostało. Dziś mówi się, że to skrót od „Unix System Resources”. Linux ma więcej takich historii niż rodzinne spotkanie przy Wigilii.

/bin i /sbin — dawniej osobne magazyny, dziś drogowskazy.

ls -ld /bin /sbin /lib

Na nowym Ubuntu, Debianie, Fedorze zobaczysz strzałkę: /bin -> usr/bin. To już nie są prawdziwe foldery, tylko drogowskazy do /usr. Kiedyś dyski były tak małe, że najważniejsze programy trzymano osobno, żeby system ruszył, nawet jak /usr był na drugim dysku. Dziś dyski są większe niż ambicje niejednego startupu, więc wszystko połączono. Fedora zrobiła to pierwsza w 2012 roku, Debian od wersji 12.

/usr/local i /opt — rzeczy spoza sklepu. Programy, które zainstalowałeś sam, a nie z systemowego sklepu z programami. /usr/local dla rzeczy skompilowanych na miejscu, /opt dla dużych programów, które przychodzą w całości, na przykład od zewnętrznej firmy. System ich nie rusza przy aktualizacjach.

/boot — kotłownia. Pliki potrzebne do uruchomienia komputera: jądro systemu i program rozruchowy. Nie dotykaj, dopóki nie wiesz, co robisz. Lekcja o starcie systemu to wyjaśni.

/srv — dane, które serwer udostępnia światu. Na przykład pliki strony albo serwera FTP. Część dystrybucji używa go chętnie, część woli /var/www.

/mnt i /media — drzwi do dobudówek. Tu podpina się inne dyski. /media zwykle dla pendrive'ów i płyt podpinanych automatycznie, /mnt dla tego, co admin podpina ręcznie.

/run — tablica korkowa. Informacje o tym, co działa teraz: numery uruchomionych usług, gniazda. Trzymane w pamięci, znikają przy restarcie.

/lost+found — biuro rzeczy znalezionych. Pojawia się na dyskach z systemem plików ext4. Jak po awarii prądu sprawdzanie dysku znajdzie kawałki plików bez nazwy, odkłada je tutaj.

Foldery, których nie ma

Zostały trzy najdziwniejsze: /proc, /sys i /dev. One nie leżą na dysku. Jądro systemu wymyśla je w locie, kiedy zajrzysz.

cat /proc/cpuinfo | grep -m1 "model name"
cat /proc/uptime
ls /proc/$$

/proc to okno do wnętrza systemu. /proc/cpuinfo mówi, jaki masz procesor. /proc/uptime ile sekund komputer działa. A $$ to numer Twojego Basha, więc ls /proc/$$ pokazuje folder z informacjami o… Twoim własnym terminalu. Patrzysz w lustro.

/sys to podobne okno, tylko do sprzętu: karty sieciowe, dyski, zasilanie.

/dev to urządzenia. Dysk to plik /dev/sda albo /dev/vda. Czarna dziura z lekcji 6 to plik /dev/null. Generator losowych bajtów to /dev/urandom.

Wszystko jest plikiem

I tu dochodzimy do jednej z najważniejszych idei Linuksa. Wszystko jest plikiem. Ustawienia to pliki. Dysk to plik. Procesor można „przeczytać” jak plik. Proces ma swój folder.

Czemu to genialne? Bo wszystkie narzędzia, które już znasz, cat, grep, rura, przekierowanie, działają na wszystkim. Nie trzeba osobnego programu do czytania informacji o procesorze. Wystarczy cat. Jak gdyby w biurowcu każda maszyna, od ekspresu do kawy po windę, miała ten sam przycisk i tę samą instrukcję.

Jak to działa pod spodem

Całe drzewo od / w dół to w rzeczywistości kilka różnych „dysków” sklejonych w jedno. Prawdziwy dysk jest podpięty pod /. /proc to wirtualny system plików proc, który jądro generuje w pamięci. /sys to sysfs. /run i często /dev/shm to tmpfs, czyli dysk w pamięci RAM. Podpinanie nazywa się montowaniem, ma swój lekcja w module o dyskach. Podgląd:

df -h
findmnt

Ściąga folderów

FolderCo tam jestKiedy tam zaglądasz
/etcustawienia systemu i programówzmieniasz konfigurację
/var/loglogicoś nie działa
/var/libdane programów, np. baz danychbackup, brak miejsca
/homefoldery użytkownikówpliki ludzi
/rootfolder domowy administratorapracujesz jako root
/tmppliki tymczasowenigdy na coś ważnego
/usr/bin, /usr/sbinprogramyszukasz, gdzie leży komenda
/usr/local, /optprogramy instalowane ręczniewłasne narzędzia
/bootjądro i program rozruchowyaktualizacja jądra, problemy ze startem
/devurządzeniadyski, /dev/null
/proc, /syswirtualne okna do jądra i sprzętuinformacje o systemie
/runstan bieżący, znika przy restarcienumery usług
/mnt, /mediapodpięte dyskipendrive, drugi dysk
/srvdane udostępniane przez serwerstrony, FTP

⚠ Typowy błąd

Pomylenie / z /root.

Admin mówi „wrzuć to do roota”, a nowy kolega wrzuca plik do /, prosto w hol główny biurowca. Tymczasem „root” w mowie adminów znaczy dwie różne rzeczy: korzeń drzewa, czyli /, i konto administratora z folderem /root. Zawsze dopytaj, o którego roota chodzi. To nie wstyd, to profesjonalizm.

Drugi częsty problem: dysk się zapełnił, serwer stanął, a winowajca to /var/log, gdzie jakiś program przez miesiąc pisał ten sam błąd co sekundę. Pierwsze sprawdzenie przy pełnym dysku:

sudo du -sh /var/log

✎ Zadanie

Odpowiedz na trzy pytania, każde jedną komendą:

  1. Jaki system i w jakiej wersji masz zainstalowany?
  2. Ile plików i folderów leży w /etc?
  3. Ile miejsca zajmują logi?
Pokaż rozwiązanie
cat /etc/os-release
ls /etc | wc -l
sudo du -sh /var/log

Pierwsza mówi, jaki to system. Druga liczy, ile rzeczy leży w /etc, z rurą z lekcji 7. Trzecia podaje rozmiar logów. -s znaczy „podsumuj”, -h znaczy „po ludzku”, w megabajtach zamiast w bajtach. A sudo, bo część logów może czytać tylko administrator. Jeśli logi zajmują kilkadziesiąt gigabajtów, to nie jest wynik zadania, tylko zgłoszenie do naprawy.

Co dalej

W zadaniu z zeszłej lekcji widziałeś bash i nologin. Ale powłok jest więcej: sh, zsh, fish, dash. W następnej lekcji poznasz całą rodzinę urzędników, zobaczysz, czym się różnią i czemu na Macu domyślnie siedzi inny niż na serwerze.