W momencie startu systemu system uruchomiony zostaje w domyślnym poziomie uruchomienia który definiowany jest w pliku # /etc/inittab. W zależności od zdefiniowanego domyślnego poziomu system decyduje jakie usługi mają być uruchomione lub wyłączone podczas startu. Istnieje 6 poziomów uruchomienia z których każdy posiada również swój plik # /etc/rc.d/rcX.d, gdzie X oznacza numer danego poziomu (od 0 do 6). W plikach tych zawarte są skrypty informujące o tym jakie serwisy dla jakiego poziomu mają zostać wywołane lub zatrzymane.
Rodzaje poziomów uruchomienia - runlevel :
0 - Zatrzymany
1 - Single-User-Mode
2 - Multiuser z częściowymi usługami
3 - Pełny tryb dla wielu użytkowników z obsługą sieci , tryb tekstowy
4 - Nieużywany
5 - Pełny tryb dla wielu użytkowników w trybie graficznym
6 - Restart
Najłatwiejsze do zrozumienia są tryby 0 i 6. Te dwa poziomy są wywołane tym samym poleceniem z różnego wejścia. W poziomie 0 system zostaje wyłączony (power off). W poziomie 6 system zostaje zrestartowany. Poziom pierwszy pozwala wejść w tryb pojedynczego użytkownika, stosowany w momencie występowania problemów ze środowiskiem lub w celu dokonania konfiguracji parametrów oraz jest przydatny w momencie odzyskiwania zapomnianego hasła root. W przypadku poziomów 2, 3 oraz 5 uruchomione zostają różne usługi. Pozostaje jeszcze nieużywany poziom 4. Najlepszą drogą na zrozumienie zagadnienia jest wyczucie jakie serwisy uruchamiane są w danym poziomie, co można zobaczyć w pliku danego poziomu # /etc/rc.d/rcX.d katalog ten zawiera pliki z definicjami jakie serwisy są uruchamiane w jakim poziomie. Nie można również zapomnieć o istnieniu pliku # /etc/init/rc.conf, w którym zapisano nazwy wszystkich zestawów skryptów.
rc.conf
# rc - System V runlevel compatibility
#
# This task runs the old sysv-rc runlevel scripts. It
# is usually started by the telinit compatibility wrapper.
start on runlevel [0123456]
stop on runlevel [!$RUNLEVEL]
task
export RUNLEVEL
console output
exec /etc/rc.d/rc $RUNLEVEL
Polecenia zarządzające uruchamianiem i wyłączaniem systemu:
- shutdown - Wyłączenie lub restart systemu
- halt - Całkowite wyłączenie systemu
- reboot - Restart systemu
- poweroff - Całkowite wyłącznie systemu, tak jak "halt"
- chkconfig - Zarządzanie w jakim poziomie uruchamiane są jakie usługi
- runlevel - Wyświetla aktualny poziom uruchomienia
- init - Służy do zmiany poziomu uruchomienia
- ntsysv - Działa podobnie jak chkconfig wyświetlając menu usług dla danego poziomu
Rozpocznijmy administrowanie w przypadku dwóch najprostszych poziomów 0 i 6. Zarządzanie w tych poziomach wykorzystuję komendę "shutdown" powodująca zamknięcie lub restart środowiska. Polecenie to posiada również swoje przełączniki:
Składnia : # shutdown [opcje] time
Opcje polecenia shutdown:
- -k - Ostrzeżenie o zamknięciu
- -h - Zatrzymanie systemu po zamknięciu
- -r - Zrestartowanie zamiast wyłączenia
- -F - Wymusza sprawdzenie systemu plików przed ponownym uruchomieniem
- -n - Zabija wszystkie istniejące procesy (nie rekomendowane)
- -t SECS - Zamyka system informując o czasie do zamknięcia w sekundach
Jeżeli zachodzi potrzeba zamknięcia lub zrestartowania systemu od razu istnieje dodatkowy przełącznik "now" mający zastosowanie z przełączkami "-h" i "-r".
# shutdown -h now - Natychmiastowe zamknięcie systemu
# shutdown -r now - Natychmiastowe zrestartowanie systemu
# reboot - Efekt identyczny z poprzednim czyli restart systemu
# shutdown -h 120 - Zamknięcie systemu po 2 minutach
Są to przykładowe polecenia do wykorzystania z komendą "shutdown" dla użytkownika root, chyba że zostaną nadane odpowiednie uprawnienia dla danego użytkownika. Należy ostrożnie nadawać uprawnienia do tych poleceń pozostałym użytkownikom z uwagi na fakt, by nie restartowali systemu powodując przerwę w jego dostępności.
W starszych wersjach RedHat możliwe jest kontrolowanie dostępu do polecenia "shutdown" w pliku # /etc/shutdown.allow. W wydaniu RHEL6 z nowym narzędziem Upstart plik ten nie istnieje.
Podobne działanie do polecenia # shutdown ma polecenie # halt , które również wyłącza środowisko i można stosować je zamiennie. Halt ma odwołania zarówno do wyłączenia, jak i restartu systemu. Można to zobaczyć listując katalog /sbin.
# cd /sbin
# ll | grep halt
-rwxr-xr-x 1 root root 16152 Jan 21 2009 halt
lrwxrwxrwx 1 root root 4 Jul 22 2010 poweroff -> halt
lrwxrwxrwx 1 root root 4 Jul 22 2010 reboot -> halt
Różnica polega na zastosowaniu odpowiedniego przełącznika.
W celu sprawdzenia jaki poziom uruchomienia jest aktualnie używany wydajemy polecenie : # runlevel lub podobne informację można zobaczyć wydając polecenie # who -r.
Jeżeli chcesz zmienić swój obecny poziom uruchomienia wydaj polecenie : # init N gdzie N to numer odpowiedniego poziomu (od 0 do 6).
Dla przyswojenia warto po przełączać się pomiędzy poziomami sprawdzając każdorazowo w jakim poziomie znajdujemy się aktualnie.
Naprawa i odzyskiwanie poziomów uruchamiania.
Czasami jak coś złego stanie się z systemem aktualnie używany runlevel może się nie uruchamiać lub nie działać prawidłowo. W takiej sytuacji do rozwiązania problemu zawsze można spróbować wykorzystać niższy poziom uruchomienia i tak jeżeli coś niedobrego dzieje się w trybie graficznym (runlevel 5) należy szukać rozwiązania w trybie tekstowym (runlevel 3), a jeśli i tu dzieje się coś nie tak można ratować się przechodząc w tryb 1 (single-user-mode) przechodząc do niego poleceniem # init. Jeżeli pomimo tego nie możemy skorzystać z niższych trybów w pracującym systemie pozostaje nam restart środowiska, przejście do GRUB i z tego poziomu wejście w tryb 1 (single-user-mode). Na egzaminach RHCSA mogą znaleźć się zadania :
- Zresetowanie i zmiana hasła użytkownika "root"
- Dostosowanie plików systemowych lub partycji, które są normalnie zablokowane jeżeli system jest w użyciu
- Naprawa systemu plików, poprzez zastąpienie nieprawidłowych tymi znajdującymi się na płycie instalacyjnej systemu RedHat.
Po zakończeniu wprowadzania zmian i pracach naprawczych, należy zrestartować środowisko, które powinno powrócić do normalnego działania. Jeżeli nadal będzie coś nie tak zawsze można powrócić do naprawczego poziomu uruchomienia i spróbować ponownie. Jeżeli nic nie przyniesie rezultatów trzeba będzie ponownie zainstalować system.
Jestem pod wrażeniem. Bardzo ciekawie napisany artykuł.
OdpowiedzUsuń