email: darw32@poczta.onet.pl


Linux - 2.Wprowadzenie

Podstawowe Usługi w Systemie UNIX

Sekcja opisuje kilka z najważniejszych usług oferowanych w Uniksie, nie omawia szczegółów (znajdziesz je w dalszych częściach książki).

init

Jedna z najważniejszych usług w systemie Unix oferowana jest przez program init. init jest pierwszym uruchomionym przez jądro procesem, ostatnim stadium bootowania jądra. init po uruchomieniu dokańcza proces bootowania poprzez wykonanie odpowiednich skryptów (np. zawierających sprawdzenie i zamontowanie systemów plików, uruchomienie demonów).

Dokładna lista czynności wykonywanych przez init różni się zależnie od systemu. init zazwyczaj udostępnia tryb jednego użytkownika, w którym nikt nie może się zalogować, a root korzysta z powłoki na konsoli; normalnie system pracuje w trybie wielu użytkowników. W niektórych systemach istnieje podział na poziomy pracy; tryb jednego użytkownika i wielu użytkowników to dwa poziomy pracy, mogą istnieć również dodatkowe, np. tryb, w którym X jest domyślnie uruchamiane.

Podczas normalnego działania init sprawdza czy działa getty (aby umożliwić użytkownikom zalogowanie), adoptuje osierocone procesy (których rodzic umarł; w Uniksie wszystkie procesy muszą tworzyć pojedyncze drzewo - sieroty muszą być adoptowane).

Podczas zamykania systemu init jest odpowiedzialny za zabicie wszystkich procesów, oraz inne skonfigurowane rzeczy.

Logowanie z terminala

Logowanie z terminala (via łącza szeregowe) oraz konsolę (jeżeli X nie działa) obsługiwane jest przez program getty. init dla każdego z terminali uruchamia osobny proces getty. getty odczytuje nazwę użytkownika po czym uruchamia program login, który odczytuje hasło. Jeżeli nazwa użytkownika i hasło są poprawne, login uruchomi powłokę. Po zakończeniu pracy powłoki (wylogowaniu się użytkownika), lub w przypadku niezgadzającego się hasła init uruchomi nowy proces getty. Jądro nie wie co to "logowanie się", jest to zależne od programów systemowych.

Syslog

Jądro oraz programy systemowe produkują błędy, ostrzeżenia i inne wiadomości. Czasami wymaga się aby była możliwość późniejszego przeglądu tych wiadomości, więc powinny być zapisywane do pliku. Troszczy się o to syslog. Można go skonfigurować do sortowania wiadomości, odrzucania, lub zapisywania wymaganych, zapisywania wiadomości do kilku plików ze względu na ważność, itp. Np. wiadomości wysyłane przez jądro są najczęściej zapisywane do osobnego pliku, ponieważ są one często ważniejsze i powinny być regularnie czytane, by dostrzec kłopoty.

Okresowe wykonywanie poleceń: cron i at

Użytkownicy i administratorzy systemu często muszą wykonywać polecenia co pewien okres. Dla przykładu: administrator mógłby chcieć czyścić co określony czas katalogi zawierające pliki tymczasowe (/tmp i /var/tmp). Zapobiega to przepełnieniu dysku, gdyż nie wszystkie programy poprawnie sprzątają po sobie.

W tym celu powstał program cron. Każdy użytkownik posiada swój plik crontab, w którym można zapisywać instrukcje uruchamiania okresowego. Demon cron troszczy się o to aby wykonać dane polecenie o wskazanym czasie.

Polecenie at jest podobne do programu cron, różni się tym, że polecenie jest uruchamiane tylko raz, w zadanym terminie; nie jest powtarzane.

Graficzny interfejs użytkownika

UNIX i Linux nie wbudowują interfejsu użytkownika w jądro; przeciwnie - interfejs dostarczany jest przez różne programy. Odnosi się to do trybu tekstowego i graficznego. Takie podejście czyni system bardziej elastycznym, posiada jednak również wadę - ułatwia to tworzenie różnorakich interfejsów, których mnogość stanowi barierę w poznawaniu systemu. Graficzne środowisko użytkownika dostępne w Linuksie nazywa się: X Window System (krótko: X). X nie implementuje interfejsu użytkownika; jest on odpowiedzialny za system okna, narzędzi, dzięki którym można opracować interfejs graficzny. Trzy najpopularniejsze style interfejsów to: Athena, Motif i Open Look.

Sieć

Sieć jest to akt łączenia co najmniej dwóch komputerów w sposób umożliwiających ich wzajemną komunikację. Aktualne metody łączenia i komunikacji są wewnętrznie skomplikowane, jednak użytkownikowi dostarczona jest użyteczna otoczka.

Unix jest systemem sieciowym. Większość podstawowych usług (systemy plików, drukowanie, kopie zapasowe) może być wykonywana przez sieć. Ułatwia to administrację systemem, gdyż pozwala na scentralizowaną administrację, przy równoczesnym korzystaniu z dobrodziejstw mikroprzetwarzania i rozproszonego przetwarzania, jak niższe koszty czy lepsza odporność na błędy.

Książka zawiera tylko podstawowe wiadomości na temat sieci; zobacz Linux Network Administrators' Guide, który zawiera więcej informacji, włączając zasady działania sieci.

Zdalne logowanie się

Zdalnie logowanie działa nieco inaczej niż normalne. Dla każdej fizycznej linii istnieje osobny terminal, przez który można się połączyć. Dla każdego zdalnego logowania istnieje wirtualne połączenie sieciowe, może ich być dowolnie dużo (a co najmniej wiele. Przepustowość sieci stanowi nadal jest nadal zasobem ograniczonym, więc istnieje pewien faktyczny limit jednoczesnych logowań poprzez jedno połączenie sieciowe). Z tego powodu nie jest możliwe uruchomienie osobnego getty dla każdego połączenia wirtualnego. Istnieje też kilka innych możliwości zdalnego zalogowania się, z których najczęściej wykorzystywane w sieciach TCP/IP są telnet, rlogin oraz ssh.

Dla tego typu logowań, zamiast stada procesów getty, istnieje pojedynczy demon (obsługujący telnet i rlogin mają odrębne demony), który czeka na połączenia. Jeżeli takie następuje, uruchamia swoją kopię, która będzie odpowiedzialna za obsłużenie danego połączenia; oryginalny proces nasłuchuje dalej.

Sieciowe systemy plików

Jedną z bardziej użytecznych rzeczy, które można zrobić przez sieć jest udostępnianie dysków za pośrednictwem sieciowego systemu plików. Najczęściej używa się protokołu Network File System (NFS), stworzonego przez Sun-a. Za pomocą takiego systemu plików wszelkie operacje plikowe wykonywane przez program na jednym komputerze przesyłane są przez sieć i wykonywane na innym. Oszukanemu programowi wydaje się, że wszystkie pliki obcego komputera znajdują się na tej maszynie, na której go uruchomiono. Powoduje to, że współdzielenie danych jest niezwykle łatwe, gdyż nie trzeba w ogóle zmieniać programów.

Poczta

Poczta elektroniczna jest najważniejszą metodą komunikacji za pomocą komputera. Elektroniczny list przechowywany jest za pomocą pliku o specjalnym formacie, a do jego przetwarzania służą specjalne programy.

Każdy użytkownik posiada skrzynkę pocztową (plik lub katalog w odpowiednim formacie), w której umieszczane są pliki z pocztą. Kiedy ktoś wysyła pocztę program lokalizuje komputer zawierający skrzynkę odbiorcy, po czym przesyła wiadomość.

System pocztowy składa się z wielu programów. Dołączaniem wiadomości do skrzynek użytkowników zajmuje się jeden program (agent transferu poczty - Mail Transfer Agent [MTA]), np. qmail, postfix), natomiast użytkownicy korzystają z wielu różnych programów do czytania (agentów poczty użytkownika - Mail User Agent [MUA]), np. pine, mutt). Zazwyczaj poczta przychodząca przechowywana jest w /var/spool/mail.

Drukowanie

W danym momencie tylko jedna osoba może korzystać z drukarki, jednak nieekonomicznym jest przydzielanie jej użytkownikowi na wyłączność. Drukarką zarządza specjalne oprogramowanie implementujące kolejkę drukowania: wszystkie żądania wydruku umieszczane są w kolejce, po zakończeniu jednej pracy wykonywana jest następna. Dzięki temu użytkownicy nie muszą walczyć o dostęp do drukarki (w zamian, tworzą kolejkę przy drukarce czekając na swój wydruk, ponieważ niewiele osób jest w stanie sprawdzić czy drukowanie zostało wykonane. Dzięki temu gwałtowanie wzrasta wewnątrz-firmowe życie towarzyskie).

Oprogramowanie kolejkujące buforuje na dysku gotowe do druku prace. Umożliwia to programom przekazanie dokumentu do programu odpowiedzialnego za drukowanie i powrót do pracy - aplikacja nie musi czekać na faktyczne zakończenie drukowania. Jest to naprawdę wygodne, gdyż pozwala wysłać do wydrukowania aktualną wersję dokumentu i nie czekając na zakończenie, rozpocząć tworzenie nowej wersji.

Struktura systemu plików

System plików podzielony jest na wiele części; najczęściej główny system plików zawiera /bin, /lib, /etc, /dev i kilka innych; katalog /usr z niezmiennymi danymi i programami; katalog /var z często zmienianymi plikami (np. logi) oraz /home zawierający katalogi domowe użytkowników. Zależnie od decyzji administratora struktura może być różna, wszystko może znajdować się jednej partycji, lub wielu, itd. Więcej informacji znajduje się w następnym rozdziale.