CodeGym /Kursy /Docker SELF /Podstawy zarządzania usługami: komendy systemctl (urucham...

Podstawy zarządzania usługami: komendy systemctl (uruchamianie, zatrzymywanie, restartowanie usług)

Docker SELF
Poziom 3 , Lekcja 0
Dostępny

Podstawy zarządzania usługami: komendy systemctl (uruchamianie, zatrzymywanie, restartowanie usług)

1. Czym są usługi w Linux-ie?

Usługi — to podstawa każdego nowoczesnego dystrybucji Linux-a. Chcesz uruchomić swój serwer WWW na Nginx? Uruchom i skonfiguruj odpowiednią usługę. Chcesz, żeby baza danych MySQL działała? Znów — to usługa. Nawet twój ulubiony cron, który będzie uruchamiać świetne skrypty bash, — to również usługa. Zarządzanie usługami to umiejętność, którą na pewno wykorzystasz nie tylko w pracy, ale i w swoich osobistych projektach. Przy okazji, na rozmowach kwalifikacyjnych pytanie "A jak zatrzymasz usługę?" pojawia się częściej, niż mógłbyś pomyśleć.

Definicja i rola

Usługa w Linux-ie — to program, który działa w tle (czyli jako demon, od angielskiego "daemon"). Te programy mogą uruchamiać się automatycznie przy starcie systemu albo ręcznie, kiedy jest taka potrzeba. Są odpowiedzialne za wykonywanie konkretnych zadań, takich jak:

  • Obsługa zapytań WWW (na przykład nginx/apache).
  • Wsparcie dla zdalnego dostępu (na przykład openssh).
  • Uruchamianie zadań według harmonogramu (na przykład cron).

W zasadzie usługi — to te "konie robocze", które wykonują zadania niewidoczne dla oczu użytkownika, ale absolutnie krytyczne dla działania systemu.


2. Podstawy zarządzania usługami za pomocą systemctl

Co to jest systemctl?

Zaczniemy od tego, że systemctl to główna komenda do zarządzania usługami w systemach, które używają systemd. Jeśli twój system działa na nowoczesnym dystrybucie Linuxa (np. Ubuntu, Fedora lub CentOS), to prawdopodobnie wykorzystuje systemd.

Główne funkcje

  1. Uruchamianie usługi: rozpoczęcie działania usługi, jeśli jest wyłączona.
  2. Zatrzymywanie usługi: zakończenie działania usługi.
  3. Restart usługi: najpierw zatrzymuje, a potem ponownie uruchamia usługę.
  4. Sprawdzanie statusu: uzyskanie bieżącego stanu usługi.

Oto podstawowa struktura komendy:

sudo systemctl [akcja] [nazwa_usługi]

Uruchamianie i zatrzymywanie usługi

Uruchamianie:

Wyobraź sobie, że zainstalowałeś serwer WWW nginx i chcesz go uruchomić. Właśnie do tego służy komenda start:

sudo systemctl start nginx

Zatrzymywanie:

A co, jeśli chcesz tymczasowo wyłączyć serwer WWW? Pomoże ci komenda stop:

sudo systemctl stop nginx

Restart usługi

Restart przydaje się, żeby zastosować zmiany w konfiguracji lub po prostu "odświeżyć" usługę (mówiąc żartobliwie, dać jej kawę i przypomnieć, że czas pracować). Użyj komendy restart:

sudo systemctl restart nginx

Sprawdzanie statusu

Nie jesteś pewien, czy nginx działa? Komenda status dostarczy pełnych informacji:

sudo systemctl status nginx

Na wyjściu zobaczysz:

  • Unikalny identyfikator procesu (PID).
  • Czas uruchomienia.
  • Logi błędów, jeśli coś poszło nie tak.

Przykładowe wyjście:

nginx.service - A high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-11-01 09:00:00 UTC; 10min ago
   ...

3. Autostart serwisów

Włączanie autostartu

Żeby serwis automatycznie uruchamiał się przy starcie systemu, użyj:

sudo systemctl enable nginx

Wyłączanie autostartu

A jeśli chcesz, żeby serwis nie startował przy starcie systemu:

sudo systemctl disable nginx

Oto prosty sposób na sprawdzenie, czy autostart jest włączony:

systemctl is-enabled nginx

Praktyka zarządzania serwisami

Przeprowadźmy kompleksowe ćwiczenie na przykładzie usługi cron.

  1. Uruchom usługę cron:

    sudo systemctl start cron
    
  2. Sprawdź, czy działa:

    sudo systemctl status cron
    

    Upewnij się, że status to "active (running)".

  3. Zatrzymaj usługę cron:

    sudo systemctl stop cron
    

    Upewnij się, że status zmienił się na "inactive (dead)".

  4. Zrestartuj usługę cron:

    sudo systemctl restart cron
    

4. Różnice między aktywnymi, wyłączonymi i zakończonymi awaryjnie usługami

Usługi mogą mieć różne stany. Oto ich główne typy:

  1. Active (running) — usługa aktywnie działa; wszystko jest w porządku.
  2. Inactive (dead) — usługa jest zatrzymana.
  3. Failed — wystąpił błąd podczas uruchamiania, zatrzymywania lub wykonywania usługi.

Aby szybko znaleźć wszystkie usługi, które są w stanie błędu, możesz użyć:

systemctl --failed

5. Typowe błędy i pułapki

Błąd: Unit not found

Jeśli otrzymałeś komunikat podobny do:

Failed to start nginx.service: Unit nginx.service not found.

To może oznaczać, że potrzebna usługa albo nie jest zainstalowana, albo jej nazwa jest niepoprawna. Sprawdź poprawną nazwę:

systemctl list-unit-files | grep nginx

Błąd uprawnień

Jeśli zapomniałeś uruchomić komendę z uprawnieniami sudo, najprawdopodobniej otrzymasz odmowę dostępu:

Permission denied

Pamiętaj, żeby dodawać sudo przed komendami systemctl.


6. Zastosowanie w realnych projektach

Zarządzanie usługami to coś, czego będziesz używać w każdej roli związanej z Linuxem:

  • DevOps: automatyzacja i zarządzanie wszystkimi usługami systemowymi.
  • Administracja serwerami: kontrola stanu serwerów WWW, baz danych i innych usług.
  • Rozwój na Linuxie: musisz rozumieć, jak zarządzać usługami powiązanymi z Twoim projektem (np. uruchamianie serwerów deweloperskich).

W ten sposób znajomość polecenia systemctl to nie tylko abstrakcyjna umiejętność, ale realne narzędzie do pracy. Przykład: trzeba zrestartować serwer WWW po aktualizacji strony? Jedno wywołanie sudo systemctl restart nginx — i zadanie wykonane!

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION