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
- Uruchamianie usługi: rozpoczęcie działania usługi, jeśli jest wyłączona.
- Zatrzymywanie usługi: zakończenie działania usługi.
- Restart usługi: najpierw zatrzymuje, a potem ponownie uruchamia usługę.
- 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
.
Uruchom usługę
cron
:sudo systemctl start cron
Sprawdź, czy działa:
sudo systemctl status cron
Upewnij się, że status to "active (running)".
Zatrzymaj usługę
cron
:sudo systemctl stop cron
Upewnij się, że status zmienił się na "inactive (dead)".
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:
- Active (running) — usługa aktywnie działa; wszystko jest w porządku.
- Inactive (dead) — usługa jest zatrzymana.
- 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!
GO TO FULL VERSION