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!