Bociek PLD - Pisarz
I. Informacje podstawowe
II. Instalacja
III. Podręcznik użytkownika
IV. Podręcznik administratora
Administracja
Zarządzanie podsystemami i usługami
V. Tworzenie PLD - Praktyczny poradnik
VI. O podręczniku
O tej książce
Spis treści
Inne wersje tego dokumentu
HTML (jeden plik)
Odnośniki
Tworzymy dokumentację PLD
Strona PLD
Listy dyskusyjne PLD

Zarządzanie podsystemami i usługami

<- ->
 

W systemie dostępne są specjalne skrypty, napisane w języku powłoki, zwane "skryptami startowymi" lub "rc-skryptami". W PLD zastosowano skrypty startowe typu System-V, dzięki temu praca administratora jest znacząco zautomatyzowana.

Za pomocą rc-skryptów pomocą możemy uruchamiać lub zatrzymywać podsystemy i usługi, kontrolować ich działanie oraz wiele innych. Można je podzielić na dwie zasadnicze grupy:

  • Skrypty podsystemów - specjalnych zadań mających za zadanie dokonać konfiguracji systemu operacyjnego. Do tego typu zadań należą: konfigurowanie sieci, ładowanie modułów, prace porządkowe i wiele innych. Te skrypty są integralną częścią systemu (pakiet rc-scripts) i zapewne są już u nas zainstalowane.

  • Skrypty zarządzania usługami - zarządzają programami działające w tle (demonami) np.: serwerem WWW, serwerem NFS. Skrypty te są instalowane automatycznie razem z pakietami usług. Wyjątek stanowią usługi z wydzielonymi w tym celu pakietami, rozpoznamy je po nazwie *-init i *-standalone. Więcej o nazewnictwie pakietów przedstawiono w tym dokumencie.

Budowa systemu rc-skryptów

Katalog /etc/rc.d przechowuje konfigurację uruchamiania usług i podsystemów, poniżej pokrótce omówiono składniki systemu rc-skryptów:

  • /etc/rc.d/init.d - katalog z skryptami startowymi usług

  • /etc/rc.d/rc{$NR}.d - katalogi tak oznaczone zawierają łącza symboliczne do skryptów zawartych w katalogu init.d. Wartość {$NR} jest liczbą wskazującą poziom pracy (run level), dla którego uruchamiana jest zawartość danego katalogu.

  • /etc/rc.d/rc - skrypt uruchamiający i zatrzymujący usługi

  • /etc/rc.d/rc.init - skrypt ustawiający opcje narodowe (język, waluta) pobiera konfigurację z pliku /etc/sysconfig/i18n

  • /etc/rc.d/rc.local - uruchamiany na samym końcu wszystkich skryptów, użytkownicy mogą dodawać tu swoje wpisy jeśli nie chcą używać init.d i rc{$NR}.d

  • /etc/rc.d/rc.serial - konfiguracja portów szeregowych

  • rc.sysinit - główny skrypt startowy uruchamiany jednokrotnie (w trakcie startu)

  • /etc/rc.d/rc.modules - załadowanie modułów z /etc/modules

  • /etc/rc.d/rc.shutdown - główny skrypt uruchamiany przy zatrzymaniu systemu lub restarcie.

  • /etc/profile - plik startowy przy pomocy którego są ustawiane głównie zmienne systemowe

Zarzadzanie podsystememi/usługami

Usługami/podsystemami zarządzamy ręcznie, wykonujemy to za pomocą uruchomienia odpowiedniego skryptu z katalogu /etc/rc.d/init.d/. Dodatkowo podajemy odpowiednim parametr określający akcję, którą skrypt ma wykonać. Uruchomienie bez parametru podaje listę możliwych dla niego akcji, dla przykładu wyświetlimy listę dostępnych parametrów podsystemu sieci:

# /etc/rc.d/init.d/network
Usage: /etc/rc.d/init.d/network {start|stop|restart|status}

Poniżej przedstawiono wyłączenie obsługi sieci, oraz ponowne jej uruchomienie. W ten sposób zmusza się usługę lub podsystem do ponownego odczytania swojej konfiguracji. W tym wypadku nastąpi skonfigurowanie na nowo interfejsów, zaktualizowanie ustawień, tablic routingu itd...

# /etc/rc.d/init.d/network stop
Shutting down interface eth0.......................................[ DONE ]
Shutting down interface eth1.......................................[ DONE ]

# /etc/rc.d/init.d/network start
Setting network parameters.........................................[ DONE ]
Bringing up interface eth0.........................................[ DONE ]
Bringing up interface eth1.........................................[ DONE ]

Lista dostępnych parametrów będzie się zmieniać w zależności od usługi, w poniższej tabeli przedstawiono znacznie tych najczęściej spotykanych:

Parametr Akcja
start Uruchamia podsystem/usługę
stop Zatrzymuje podsystem/usługę
reload, force-reload Przeładowanie usługi poprzez wysłanie sygnału (zwykle HUP) do demona, często oba podane parametry mają takie same działanie. Operacja używana do ponownego odczytania konfiguracji demona.
restart Pełny restart usługi (zazwyczaj jest to kolejne wywołanie skryptu z parametrem start i stop). Operacja używana do ponownego odczytania konfiguracji demona.
status Wyświetla stan podsystemu/usługi, dzięki temu możemy łatwo określić czy czy jest uruchomiony. W niektórych wypadkach podawane są dodatkowe informacje.

Niektóre usługi posiadają inne, użyteczne tylko dla nich parametry. Przykładem może być argument init, który zazwyczaj musi być użyty przed pierwszym uruchomieniem usługi.

Nieco wygodniej zarządza się skryptami przy pomocy programu service. Aby wykonać za jego pomocą taki sam efekt jak powyżej musimy go wywołać z dwoma parametrami, pierwszy to nazwa skryptu, drugi zaś to wybrana akcja:

# service network stop
# service network start

Domyślnie po zainstalowaniu nowego podsystemu lub usługi, dodawane są potrzebne skrypty startowe. Dzięki temu nowo zainstalowane oprogramowanie uruchamia się automatycznie w trakcie startu systemu lub przy zmianie poziomu pracy. Aby uruchomić dopiero co zainstalowany podsystem lub usługę musimy wykonać to "ręcznie".

  • Zarządzanie skryptami startowymi w trakcie instalacji/aktualizacji pakietów opisano w tym dokumencie

  • Jeśli zechcemy utworzyć własny rc-skrypt to z pomocą przyjdzie nam szablon z pliku /usr/share/doc/rc-scripts{$wersja}/template.init.gz

Konfiguracja rc-skryptów

Skryptów startowych typu System-V nie konfigurujemy bezpośrednio, w PLD służy ku temu zestaw plików konfiguracyjnych umieszczony w katalogu /etc/sysconfig. Znajdziemy w nim zarówno pliki konfiguracji systemu jak i konfiguracji zainstalowanych usług.

Większość tych plików jest bezpośrednio załączana do kodu rc-skryptów, zatem ich składnia musi odpowiadać składni powłoki wskazanej w skrypcie (w PLD jest to /bin/sh). Dotyczy to także plików konfiguracji interfejsów sieciowych w katalogu /etc/sysconfig/interfaces. W plikach tych występują jedynie konstrukcje przypisania zamiennych oraz ewentualne komentarze. Możemy co prawda umieszczać tam dowolne komendy wiersza poleceń, jednak należy być przy tym niezwykle ostrożnym i robić to tylko w uzasadnionych przypadkach. Jest jednak kilka plików konfiguracji, które są traktowane inaczej - mają własną składnię, przykładem tego rozwiązania są np. pliki /etc/sysconfig/static-*, nimi jednak nie będziemy się zajmować w tym rozdziale.

Opcje w plikach konfiguracji można podzielić na dwie grupy: ogólnego stosowania i specyficzne dla rc-skryptu. Pierwsza z nich to uniwersalne opcje, z którymi możemy się zetknąć w wielu w innych plikach konfiguracji np.:

  • SERVICE_RUN_NICE_LEVEL - priorytet procesów usługi (liczba nice)

  • RPM_SKIP_AUTO_RESTART - mówi programowi rpm czy usługa ma być automatycznie restartowana po aktualizacji, więcej o tej opcji w tym dokumencie

Druga grupa to opcje występujące tylko w pliku konfiguracji konkretnego rc-skryptu - zwykle są związane z argumentami pliku wykonywalnego usługi, dlatego należy uważnie czytać komentarze plików konfiguracji i w razie potrzeby podręczniki systemowe usług.

Zależności

Pomiędzy niektórymi demonami i podsystemami istnieją ścisłe powiązania, jako przykład można wymienić usługi sieciowe i podsystem sieci. Usługa jest zależna od działania sieci i próba wyłączenia najpierw tej drugiej może niekiedy zaowocować problemami, gdyż PLD nie dba o to za nas. Musimy samemu się zatroszczyć o wyłączanie usług we właściwej kolejności.

Pewną wskazówką będą numery przy nazwach łączy symbolicznych w katalogach /etc/rc.d/rc{$nr}.d (przy literze S). Numery te określają kolejność ładowania usług w trakcie startu systemu.

Usługi a poziomy pracy

W PLD zastosowano klasyczny, oparty na rc-skryptach typu System-V system poziomów pracy. Poziomami na których pracują usługi można zarządzać ręcznie, jest to jednak niezalecany sposób, lepszym pomysłem jest użycie programu chkconfig. Aby wyświetlić listę usług uruchamianych przy w danych poziomach pracy wydajemy polecenie:

# chkconfig --list
crond           0:wył.  1:wył.  2:wł.   3:wł.   4:wł.   5:wł.   6:wył.
cups            0:wył.  1:wył.  2:wł.   3:wł.   4:wł.   5:wł.   6:wył.
sshd            0:wył.  1:wył.  2:wył.  3:wł.   4:wł.   5:wł.   6:wył.
gdm             0:wył.  1:wył.  2:wył.  3:wył.  4:wył.  5:wł.   6:wył.
network         0:wył.  1:wył.  2:wł.   3:wł.   4:wł.   5:wł.   6:wył.
sshd            0:nie   1:nie   2:nie   3:nie   4:tak   5:nie   6:nie

W PLD najczęściej korzysta się z trybów 3 i 5 rzadziej z: 1, 2 i 4, nigdy nie ustawiamy trybu 0 (restart) i 6 (wyłączenie). Na powyższym przykładzie podsystem network jest uruchamiana dla poziomów: 2,3,4,5, zaś gdm tylko dla trybu 5. Aby włączyć/wyłączyć uruchamianie jakiejś usługi wywołujemy program następująco: chkconfig {$usługa} on/off. Wyłączenie usługi sshd (domyślnie jest włączona):

# chkconfig sshd off

Włączenie analogicznie:

# chkconfig sshd on

Poziomy dla których usługa ma być włączona/wyłączona jest wskazywane przez specjalny wpis w rc-skrypcie, możemy go odczytać następująco:

$ grep chkconfig /etc/init.d/sshd
# chkconfig:    345 55 45

pierwszy ciąg cyfr w wierszu to lista poziomów, których dotyczy operacja włączenia/wyłączenia rc-skryptu. W razie potrzeby możemy wymusić operację dla konkretnego numeru poziomu pracy np:

# chkconfig --level 5 sshd off

Dodawanie lub usuwanie usług w poziomach pracy nie powoduje ich uruchomienia lub zatrzymywania, aby to zrobić musimy wykonać to ręcznie lub zmienić tryb pracy. Poziomy pracy zostały szerzej omówione w tym dokumencie.

 
<- ->