Przejdź do głównej zawartości

Linux RHCSA cz.3 - Runlevels - poziomy uruchomienia systemu

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 

# cat 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. 



Komentarze

Prześlij komentarz

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości