Ten blog nie jest już rozwijany. Wraz ze wszystkimi artykułami zostały przeniesiony pod adres wmroczkowski.pl

Czy chcesz przejść pod nowy adres?

piątek, 3 października 2008

Strutkura katalogów systemu Linux

Sposób w jaki Linux rozmieszcza swoje pliku na dysku jest kompletnie różny od tego stosowanego w Windowsie. Każdy z użytkowników Linuxa zapewne pamięta kiedy pierwszy raz wyświetlił zawartość swojej partycji linuksowej - jak wielkie było było zdziwienie a zarazem przerażenie na myśl o pracy z takim "drzewem" a raczej "lasem" plików. Obecnie użytkownicy którzy przechodzą na Linuxa mają już pewien zarys tego co mogą tam zobaczyć, jednak dobra znajomość katalogów systemu jest kluczem do opanowania Linuxa w stopniu średnio-przeciętnego użytkowania.
Ten artykuł jest wstępem do poznania struktury plików - zostanie tu opisany pierwszy poziom katalogów Linuksa. Cały artykuł ma na celu ułatwić początkowym użytkownikom tego systemu wybór odpowiednich katalogów do instalacji konkretnych programów.
Poniżej znajduję się przykładowa struktura katalogów dla RedHat Linux.



/
Katalog główny oznaczony jest w Linuxie symbolem "/" (slash) - określonym jest również słowem "root", które oznacza z angielskiego korzeń. Wszystkie katalogi wywodzą się od tego jednego. To w tym miejscu jest zainstalowana cała struktura plików. Przenosząc to na język Windowsa - "/" jest tym sam co "c:" w Windowsie. Linux nie uruchomi się bez zawartości "/". Usunięcie stąd plików jest tym samym co usunięcie zawartości folderu "c:/Windows" w Windowsie.

/bin
Folder /bin zawiera ważne programy systemowe, czyli pliki binarne (wykonywalne). Od tego właśnie wywodzi się nazwa - "bin" jest skrótem od "binary". To tutaj znajdują się najczęściej używane programy, takie jak: cat, less, grep, more, cp, mkdir, date, dmesg, etc...

/boot
Jak sama nazwa wskazuje, ten katalog jest odpowiedzialny za uruchomienie całego systemu oraz same jądro Linuxa. Gdyby nie jądro nie byłoby Linuxa. To ono odpowiada za wszystkie uruchomione procesy w systemie. Drugim krytycznym dla systemu programem znajdującym w katalogu boot jest bootloader, czyli program odpowiadający za zlokalizowane jądra i uruchomienie go.

/dev
"Dev" jest skrótem słowa "device", czyli urządzenie. W Linuxie każde urządzenie jest plikiem. Oznacza to, że dla każdego podłączonego urządzenia w systemie zostaje utworzony odpowiadający mu plik, za pomocą którego system komunikuje się z urządzeniem. Jeżeli system wykrywa dysk kojarzy go z plikiem np."/dev/sda". W tym przypadku /dev jest katalogiem a /sda plikiem odpowiadającym za dysk. Tutaj koniecznie trzeba powiedzieć o pliku /dev/null, który jest jakby czarną dziurą - śmietnikiem na bity, które do niego wpadają. Wykorzystujemy je gdy np. chcemy przekierować dane ze standardowego wyjścia (ekranu) do miejsca w którym dane nie będą ani zapisane ani wyświetlane, czyli do /dev/null. Jeżeli np. chcemy sformatować cały dysk twardy możemy to zrobić komendą: 'dd if=/dev/null of=/dev/sda'. Skopiuje to zawartość urządzenia /dev/null, czyli naszą próżnię, na dysk twardy - cała zawartość dysku zostanie skasowana.

/etc
Jeżeli lubisz konfigurować programy, ustawiać system pod własne wymagania i grzebać w ustawieniach to w tym katalogu będziesz spędzał najwięcej czasu. W /etc system przechowuje pliki konfiguracyjne wszystkich programów. Oczywiście programy pod Linuxem domyślnie są już dosyć rozsądnie skonfigurowane ale jeżeli je jeszcze bardziej zoptymalizować to wystarczy, że otworzysz do edycji odpowiedni tekstowy plik konfiguracyjny i edytujesz odpowiednie linie. Przeważnie pliki konfiguracyjne są opatrzone sensownymi komentarzami i gotowymi komendami, które wystarczy odhashować i gotowe. Wystarczy podstawowa znajomość języka angielskiego.

/lib
W tym katalogu znajdziemy skompilowane biblioteki niezbędne do uruchomienia systemu. Większość plików znajdujących się w tym katalogu ma rozszerzenie '.so' co oznacza 'shared object'. Te pliki są tak zbudowane aby mogły być wykorzystane przez programu różnego rodzaju. Dzięki temu nie musimy ściągać różnych programów po 300 mb, ale np. programy, które zajmują 50 mb i korzystają z tych samych plików '.so' co inne programy. W Windowsie takie pliki mają nazwę 'Dynamically Linked Libraries' powszechnie znano jako DLL. Jako przeciętny użytkownik prawdopodobnie nie będziesz musiał korzystać z plików, które znajdują się w katalogu /lib. Cały proces kojarzenia plików odbywa się automatycznie. Czasami jednak możesz spotkać się z błędem 'missing shared object'. Oznacza to, że program który instalujesz lub uruchamiasz wymaga obecności innego programu.

/lost+found
W tym katalogu znajdziesz pliki odnalezione podczas wykonywania testów dysku. Do czego to się może przydać? Jeżeli użytkownik nie zamknie systemu prawidłowo lub system dozna nagłego braku zasilania to w trakcie następnego wczytywania się systemu zostanie uruchomiony program skanujący, który sprawdzi czy wszystko jest w porządku i w razie potrzeby spróbuje naprawić błędy. Wszelkie pliki uszkodzone i naprawione są umieszcza w katalogu /lost+found aby użytkownik mógł je przejrzeć i podjąć decyzję co z nimi dalej zrobić.

/mnt
/media

Te dwa katalogi znajdujące się w głównym katalogu sytemu odpowiedzialne są za montowanie dysków, cd-romów, pendrive'ów oraz wszelkich urządzeń przenoszących dane. W zależności od dystrybucji Linuxa w katalogu /media montowane są nośniki wymienne jak pendrive, dyskietka, karty pamięci, czy napędy cdrom. Natomiast w /mnt montowane są dyski twarde. Wyjątkiem tutaj jest Ubuntu, gdzie dyski montowane są w katalogu /media. We wcześniejszych dystrybucjach Linuxa konieczne było montowanie nośników ręcznie, tzn. poprzez odpowiednie komendy. Obecnie, w większości dystrybucji nośniki montowane są automatycznie po podłączeniu. Oczywiście można takie ustawienia zmienić i montować ręcznie. To samo dotyczy miejsca montowania - /mnt i /media to tylko domyślna konfiguracja dla montowanych nośników. Tak naprawdę możesz zamontować dowolne urządzenie w jakimkolwiek katalogu na dysku, jeżeli oczywiście masz do niego dostęp. Jednak montowanie urządzeń w tych katalog znacznie ułatwia nam późniejsze poruszanie się po nich. Jeśli chodzi o katalog /media to jest on nową rzeczą w Linuxie. Kiedyś używało się tylko katalogu /mnt.

/opt
Tutaj możemy instalować oprogramowanie dodatkowe. W Linuxie, mówiąc o oprogramowaniu dodatkowym, mam na myśli takie, które nie jest dostępne w repezytorium i jest instalowane z paczek. Aby nie oddzielać programów instalowanych ręcznie od tych systemowych poprzez np.zmianę nazwy katalogów możemy je po prostu zainstalować w /opt. Różne dystrybucje różnie się ustosunkowują do tego katalogu. Jeżeli domyślnie instalujesz Apache' jego pliki konfiguracyjne znajdują się w /etc. Jeżeli zainstalujesz Apache'a w pakiecie LAMP, wszystkie pliki instalują się w katalogu /opt. Więc często w nowych dystrybucjach ten katalog jest po prostu wykorzystywany do przechowywania oprogramowania trzeciego.

/proc
W tym katalogu znajdują się wszelkie informacje odnośnie uruchomionych na twoim systemie procesów jak również o stanie komputera. Np. plik '/proc/cpuinfo' przechowuje dane na temat twojego procesora: prędkość, marka, taktowanie, etc. Znajdziesz tam również informację związane z systemem plików, ilością wolnej pamięci, miejsca, itd.

/sys
Od wersji jądra w wersji 2.6 znajdziemy tam interfejs zmiany parametrów jądra. Obecnie katalog /sys przejmuje funkcjonalność katalogu /proc.

/tmp
W tym katalogu, jak sama nazwa wskazuje, zapisywane są pliki tymczasowe. Znajdziesz tutaj pliki, które system musiał pobrać np. podczas surfowania po internecie lub instalacji jakiegoś programu. Większość plików z tego katalogu po zakończeniu danej operacji jest usuwana automatycznie, jednak warto co jakiś czas tam zajrzeć aby sprawdzić czy system nie generuje nam jakiegoś zbędnego śmietnika plików.

/usr
Gdybyś teraz użył komendy 'ls /usr/bin' prawdopodobnie byś zobaczył bardzo długą listę różnego rodzaju programu. Pewnie trochę to Cię dziwi bo przecież wszystkie pliki binarne miały być trzymane w katalogu /bin, więc skąd tego tutaj tyle? Dzieje się tak ponieważ Linux rozdziela wszystkie programy na te które są niezbędne do uruchomienia systemu oraz na te, które są używane "dla wygody" przez użytkownika, np. przeglądarki, odtwarzacze muzyki i filmów, programy graficzne, itd, itd... Porównując Linuxa z Windowsem możemy powiedzieć, że /usr jest dla Linuxa tym czym "c:/Program Files" dla Windowsa.

/var
Jeżeli na twoim systemie działają różnego rodzaju serwery pocztowe, www, ftp, ssh itp. to będziesz bardzo często korzystał z katalogu /var, ponieważ znajdują się tutaj logi systemowe. Cały katalog działa podobnie do /tmp, ponieważ pliki przechowywane tutaj są tymczasowe ale nie w tym samym sensie co te w /tmp. Pliki znajdujące się w katalogu /var nie są krytyczne dla uruchomienia żadnego programu, natomiast pomagają użytkownikowi diagnozować co dzieje się w tle jego systemu. Z jaką częstotliwością te pliki będą się kasowały oraz ile miejsca zajmowały zależy od nas. W katalogu /var/mail znajduje się nasza poczta; wszystkie wysłane i odebrane wiadomości, więc nie oszczędzajmy miejsca na ten katalog.

Mam nadzieję, że ten artykuł chociaż trochę przybliżył początkującym użytkownikom jak również tym, którzy już od jakiegoś czasu pracują na Linuxie, rozeznanie się w strukturze katalogów Linuxa. Oczywiście Linux zawiera jeszcze mnóstwo miejsc o których nie pisałem a które mogą być kluczem w rozwiązaniu pewnym problemów użytkownika lub administratora systemu. Jeżeli masz jakiś konkretny problem związany z tym postem pisz do mnie lub w komentarzu. Postaram się Ci pomóc!

Brak komentarzy: