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):
Włączenie analogicznie:
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.
|