Kontrolowanie usług w systemach Linux

Kontrolowanie usług w systemach Linux

We wszystkich systemach Linux istnieją procesy, które są odpowiedzialne za kontrolowanie usług. Procesy, o których wspominam określa się jako usługi lub demony. Dzięki nim działają bardzo rozbudowane funkcje systemu czy też te sieciowe jak na przykład HTTP, czy też inne związane z codziennym korzystaniem z systemu. Wspomniane usługi nie są w jakiś sposób jednoznaczne. Oznacza to, że stosuje się je w zależności od przeznaczenia systemu. Przykładem tego jest serwer HTTP. Na takim urządzeniu nie instaluje się środowiska graficznego, ponieważ jest zbyteczne.

Istotne w usługach jest również możliwość ich uruchamiania, restartowania i wyłączenia bez konieczności ponownego uruchomienia urządzenia. Ma to ogromny sens w przypadku urządzeń, które muszą działać w trybie ciągłym. W związku z tym istnieje kilka narządzi do zarządzania usługami, czy też jeżeli wolisz demonami. Mogą je kontrolować także skrypty, programy czy też inne pliki konfiguracyjne.

W tym materiale dość szczegółowo chcę opisać dwa z nich, natomiast o jednym tylko wspomnieć. Chociaż przyznam, że na co dzień korzystam tylko z jednej z wymienionych poniżej. Warto jednak wiedzieć choć o ich istnieniu. Nigdy nie wiesz z czym spotkasz się jutro. Jak i również nigdy nie wiadomo, czy któraś z dystrybucji nie zmieni swojego oprogramowania. Zobacz jak może wyglądać kontrolowanie usług w systemach Linux.

 

Dołącz do szkolenia "Docker w 90 minut!"

Podczas szkolenia dowiesz się wszystkiego, co potrzebne, by wystartować z konteneryzacją. Poznasz podstawową obsługę Dockera. Nauczysz się 17 komend, które musi znać każda osoba działająca z kontenerami, Dockerem i Kubernetesem.

Widzimy się 12 września o 13:00!

Chcesz wziąć udział w szkoleniu? Zapisy na stronie: https://asdevops.pl/s42/

 

SysV

Jest to pierwszy menadżer usług, który chce opisać. Działa on na zasadzie ustawiania poziomów uruchomienia usług. Te poziomy konfigurowane są przy pomocy skryptów. Jest ich dokładnie 7 i zaczynają się od 0 do 6. Każdy ze wspomnianych poziomów służy do czegoś innego. Zerknij na poniższą listę:

  • Poziom 0: zamykanie systemu;
  • Poziom 1, s lub single: w tym przypadku możesz skorzystać z trzech wymienionych form. Ten tryb nazywany jest trybem jednego użytkownika w którym nie ma dostępu do sieci oraz innych niepotrzebnych funkcji;
  • Poziom 2, 3, 4: tryb wielu użytkowników, którzy mogą logować się przy pomocy wiersza poleceń lub nawet sieć. Najczęściej korzysta się z poziomu 3. Dwa pozostałe są rzadko używane;
  • Poziom 5: wszystkie elementy składowe zawarte w trybie 3 plus do tego możliwość logowania w trybie graficznym;
  • Poziom 6: ponowne uruchomienie systemu;

Program zarządzający wymienionymi poziomami pracy znajduje się /sbin/init. To właśnie on określa poziom działania zdefiniowany przez jądro systemowe. Takie instrukcje mogą się znajdować również w pliku /etc/inittab. W systemie Debian taki plik nie istnieje. W związku z tym nie korzysta on z tego rozwiązania. Natomiast w Red Hat Enterprise Linux po wyświetleniu zawartości pliku otrzymamy informację:

cat /etc/inittab
# inittab is no longer used.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target

…że system Red Hat nie korzysta już z tego sposobu ustawień. Wskazuje również gdzie oraz w jaki sposób wykonać poszczególne konfiguracje.

Natomiast niezależnie od tego istnieją jeszcze skrypty, które są uruchamiane w zależności od poziomu uruchomienia przedstawionego powyżej. Wszystkie znajdują się w katalogu /etc/init.d.

W związku z tym, że nie posiadam dystrybucji linuksowej działającej w pełni na SysV pozwolę pokazać składnię wraz z opisem:

id:poziom:akcja:proces

Pierwszy element czyli id jest to identyfikator. Maksymalna jego długość to cztery znaki. Używa się go do identyfikacji wpisu. Druga część ustawienia czyli poziom określamy numer z jakim ma zostać uruchomiona usługa. Poziomy poznaliśmy w poprzednim paragrafie. Trzeci punkt są to akcje. Jest ich kilka:

  • boot – proces będzie wykonany podczas inicjalizacji, uruchomienia urządzenia. W tym wypadku poziom jest ignorowany;
  • bootwait – proces będzie wykonany podczas inicjalizacji i init zaczeka aż się wykona. Tak jak w przypadku poprzedniej akcji poziom jest ignorowany;
  • sysinit – wykonanie następuje po inicjalizacji systemu. Poziom nie ma znaczenia i jest ignorowany;
  • wait – proces jest wykonywany zgodnie z określonym poziomem działania i init zaczeka aż to nastąpi;
  • respawn – proces uruchomi się ponownie jeżeli zostanie przerwany;
  • ctrlaltdel – proces zacznie działać po wykonaniu sekwencji klawiszy CTRL+ALT+DEL;

W celu sprawdzenia poziomu na jakim funkcjonuje obecnie nasz system wystarczy, że posłużmy się poleceniem:

runlevel
N 5

Jak prezentuje powyższy przykład mój system korzysta z poziomu 5. W przypadku systemu Debian, aby móc wywołać polecenie należy skorzystać z sudo lub konta użytkownika root. Ważną informacją jest to, że SysV jest aktywny. Jego konfigurowanie wykonuje inne narzędzie, takie jak poznane w następnym punkcie.

systemd

W obecnej chwili jest to najczęściej wykorzystywany menadżer do zarządzania usługami w systemach Linux. Jedyny problem jest z nazewnictwem usług, które w dystrybucjach linuksowych różnią się od siebie. Przykładem tego może być usługa serwera apache2. W dystrybucjach Red Hat wszelkie czynności musimy wykonać na nazwie usługi httpd.service natomiast w przypadku Debiana apache2.service. Niestety, wprowadza to pewnego rodzaju zamieszanie i szkoda, że w tej kwestii nie zostało to dogadane.

Natomiast sam service jest jednym z typów dostępnych w systemd. Służy on do uruchomienia, zatrzymania, restartu usług i innych czynności możliwych w programie. Jak się zapewne domyślasz nie jest on jedyną możliwością. Pozostałe to:

  • socket – może być to gniazdo systemu plików lub gniazdo sieciowe;
  • device – typ powiązany z zidentyfikowanym urządzeniem przez jądro;
  • mount – typ określający punk montowania w systemie plików;
  • automount – typ określający punkt automatycznego montowania w systemie plików;
  • target – typ grupujący jednostki jako jedną;
  • snapshot – zapisuje aktualny stan menadżera;

W związku z tym dzięki poleceniu jesteśmy w stanie administrować wszystkim, co znajduje się w systemie. Pozostało tylko wyjaśnić w jaki sposób to robić.

Otóż szczególnie ważnym zadaniem takiego menadżera jest możliwość startu, restartu i zamknięcia. Jednak w przypadku wykonania którejkolwiek z czynności musisz się posłużyć poleceniem systemctl, a nie wprowadzić nazwę programu. Otóż systemd to tylko nazwa programu, a systemctl jest to program, dzięki któremu wykonasz wszystkie istotne konfiguracje. Najczęściej używane przedstawiam na poniższej liście z krótkim opisem:

  • systemctl start nazwa.service – uruchamia usługę;
  • systemctl stop unit.service – zatrzymuje usługę;
  • systemctl restart unit.service – restartuje usługę;
  • systemctl status unit.service – wyświetla status usługi;
  • systemctl is-active unit.service – wskazuje czy usługa jest uruchomiona czy nie;
  • systemctl enable unit.service – uruchamia usługę tak, że będzie dostępna przy uruchomieniu systemu;
  • systemctl disable unit.service – wyłącza usługę przy starcie systemu;

Powyższe polecenia najczęściej wykorzystuje się w czasie pracy z Linuksem. Jest tego o wiele więcej. Jeżeli chcesz możesz się z nimi zapoznać wprowadzając w konsoli polecenie z opcją pomocy:

systemctl --help

Pojawi się dość obszerna lista.

Upstat

Jest to ostatni menadżer, który przeznaczony był dla systemu Ubuntu. Od 2015 roku jednak projekt ten porzucono. Ubuntu korzysta z menadżera poznanego w poprzednim paragrafie. Upłynęło bardzo dużo czasu odkąd ta usługa nie jest dostępna w wymienionej dystrybucji. W związku z tym chcę wspomnieć tylko o jej istnieniu.

Podsumowanie – Kontrolowanie usług w systemach Linux

Jak zaprezentowałem w tym materiale kontrolowanie usług nie jest niczym skomplikowanym. Głównym narzędziem występującym w dystrybucjach to systemd, który posiada ogromne możliwości konfiguracyjne. W związku z tym w większości przypadków nie modyfikujesz pliku ręcznie. Tylko korzystasz ze wspomnianego polecenia, a także odpowiedniej opcji.

Chcesz wiedzieć więcej na temat administracji? Przeczytaj nasze artykuły, a także weź udział w kursach!

 

Dołącz do szkolenia "Docker w 90 minut!"

Podczas szkolenia dowiesz się wszystkiego, co potrzebne, by wystartować z konteneryzacją. Poznasz podstawową obsługę Dockera. Nauczysz się 17 komend, które musi znać każda osoba działająca z kontenerami, Dockerem i Kubernetesem.

Widzimy się 12 września o 13:00!

Chcesz wziąć udział w szkoleniu? Zapisy na stronie: https://asdevops.pl/s42/

 

 

 

 

12 września o 13:00 webinar "Docker w 90 minut!"

X