Jak używać systemctl do wyświetlania i zarządzania usługami w systemie Linux: Kompletny przewodnik dla początkujących

目次

1. Wprowadzenie

Podczas pracy w systemie Linux istnieje wiele sytuacji, w których możesz chcieć sprawdzić status usług lub wyświetlić wszystkie uruchomione procesy. W takich przypadkach polecenie systemctl jest niezwykle przydatne.

To polecenie współpracuje z „systemd”, systemem inicjalizacji i menedżerem usług w Linuksie, oferując szeroki zakres funkcji, takich jak sprawdzanie statusu usługi (jednostki), uruchamianie, zatrzymywanie, ponowne uruchamianie oraz wyświetlanie listy usług.

Szczególnie przy „wyświetlaniu z systemctl” możesz zrozumieć strukturę swojego systemu z różnych perspektyw – nie tylko aktualnie aktywne usługi, ale także nieaktywne, czy usługi skonfigurowane do automatycznego uruchamiania.

Ten rozdział krótko nakreśli podstawy tego, czym jest „systemctl”, oraz wyjaśni, czego dowiesz się w tym artykule.

Co to jest systemctl?

systemctl jest standardowym narzędziem do kontrolowania i sprawdzania różnych „jednostek”, takich jak usługi, cele i punkty montowania w dystrybucjach Linuksa opartych na systemd.

Na przykład używasz go do uruchamiania lub zatrzymywania usług takich jak Apache (httpd) czy SSH, albo do wyświetlania statusu tych usług.

Związek między systemd a systemctl

systemd jest rdzeniowym systemem odpowiedzialnym za procesy rozruchu i zarządzanie usługami w Linuksie, zastępując starsze narzędzia, takie jak SysVinit i Upstart. systemctl jest narzędziem wiersza poleceń, które bezpośrednio komunikuje się z systemd.

Innymi słowy, jeśli systemd jest „kontrolerem”, to systemctl pełni rolę „operatora”, który wysyła instrukcje.

Czego dowiesz się w tym artykule

Ten artykuł odpowiada na następujące typowe pytania:

  • Jak mogę wyświetlić wszystkie aktualnie uruchomione usługi?
  • Jak włączyć do listy usługi nieaktywne?
  • Jak sprawdzić, które usługi są włączone do automatycznego uruchamiania?
  • Jak odczytać i zinterpretować wyniki?

Każdy przykład polecenia i jego wynik są dokładnie wyjaśnione dla początkujących, więc śmiało podążaj za nami aż do końca.

2. Jak wyświetlić usługi za pomocą systemctl

W administracji systemem Linux szybkie zrozumienie listy usług jest kluczowe. Dzięki poleeniu systemctl możesz łatwo zobaczyć nie tylko aktualnie aktywne usługi, ale także nieaktywne oraz te skonfigurowane do automatycznego uruchamiania.

Poniżej wyjaśniamy trzy główne perspektywy wyświetlania usług:

  • Lista aktywnych usług
  • Lista wszystkich usług (w tym nieaktywnych)
  • Lista plików jednostek usług (z ustawieniami uruchamiania)

2.1 Wyświetlanie aktualnie aktywnych usług

Aby sprawdzić, które usługi „działają” w Twoim systemie, użyj tego podstawowego polecenia:

systemctl list-units --type=service

To polecenie wyświetla listę aktualnie aktywnych (działających) usług. Wynik zawiera następujące kolumny:

ColumnDescription
UNITName of the service (e.g., ssh.service)
LOADWhether the unit file is loaded
ACTIVEService status (e.g., active, inactive, failed)
SUBDetailed status (e.g., running, exited, dead)
DESCRIPTIONBrief description of the service

Ta informacja pomaga zrozumieć, na przykład, czy nginx jest aktualnie uruchomiony lub które usługi są aktywne.

2.2 Wyświetlanie wszystkich usług, w tym nieaktywnych

Domyślnie list-units pokazuje tylko aktualnie aktywne usługi. Aby uwzględnić usługi nieaktywne, dodaj opcję --all:

systemctl list-units --type=service --all

Ta opcja pozwala zobaczyć usługi w stanie „inactive” lub te, które nigdy wcześniej nie były uruchamiane.

Jeśli chcesz jeszcze bardziej zawęzić wyniki, użyj opcji --state= do filtrowania według konkretnego statusu:

systemctl list-units --type=service --state=inactive

Jest to przydatne, gdy chcesz sprawdzić wyłącznie usługi zatrzymane, na przykład.

2.3 Wyświetlanie plików jednostek usług

Jeśli chcesz poznać nie tylko bieżący status, ale także które usługi są włączone i skonfigurowane do automatycznego uruchamiania, użyj następującego polecenia:

systemctl list-unit-files --type=service

To wyświetla listę plików jednostek usług (plików konfiguracyjnych) i pozwala sprawdzić ich status włączenia/wyłączenia (enabled, disabled, itp.).

STATE ValueDescription
enabledAutomatically enabled at boot
disabledNot enabled at boot; must be started manually
staticStarted as a dependency of other units; cannot be enabled/disabled directly
maskedExplicitly disabled and cannot be started (protected)

Przegląd tej listy pomaga wizualnie zrozumieć, które usługi startują przy rozruchu i czy któreś zostały przypadkowo zamaskowane.

3. Podstawowe zarządzanie usługami za pomocą systemctl

Polecenie systemctl nie tylko sprawdza status usługi, ale także pozwala na uruchamianie, zatrzymywanie, ponowne uruchamianie oraz włączanie lub wyłączanie usług. Oto podstawowe operacje często używane w zarządzaniu systemem Linux.

Opanowanie tych poleceń jest niezbędne do codziennego zarządzania serwerem i rozwiązywania problemów.

3.1 Uruchamianie usługi

Aby uruchomić konkretną usługę ręcznie, użyj podpolecenia start:

sudo systemctl start [service name]

Na przykład, aby uruchomić Apache (httpd):

sudo systemctl start httpd.service

To uruchamia usługę natychmiast. Jeśli chcesz, aby przetrwała po ponownym uruchomieniu, użyj również enable (wyjaśnione poniżej).

3.2 Zatrzymywanie usługi

Aby zatrzymać usługę, użyj tego polecenia:

sudo systemctl stop [service name]

Przykład:

sudo systemctl stop sshd.service

Usługa pozostaje zatrzymana, dopóki nie uruchomisz jej ponownie explicite.

3.3 Ponowne uruchamianie usługi

Aby ponownie uruchomić usługę (na przykład po zmianach konfiguracji), użyj:

sudo systemctl restart [service name]

Przykład:

sudo systemctl restart nginx.service

Ponowne uruchomienie zawsze zatrzymuje, a następnie uruchamia usługę, niezależnie od jej aktualnego stanu.

3.4 Sprawdzanie statusu usługi

Aby sprawdzić szczegółowy status usługi, użyj podpolecenia status:

systemctl status [service name]

Przykład:

systemctl status mysql.service

To pokazuje aktualny stan aktywny, identyfikator procesu (PID), podsumowanie logów i więcej — bardzo pomocne przy rozwiązywaniu problemów.

3.5 Włączanie usługi do automatycznego uruchamiania

Aby zapewnić, że usługa uruchamia się automatycznie podczas rozruchu, użyj podpolecenia enable:

sudo systemctl enable [service name]

Przykład:

sudo systemctl enable docker.service

Teraz usługa uruchomi się automatycznie przy następnym rozruchu systemu.

3.6 Wyłączanie usługi z automatycznego uruchamiania

Aby wyłączyć automatyczne uruchamianie, użyj polecenia disable:

sudo systemctl disable [service name]

Przykład:

sudo systemctl disable cups.service

To uniemożliwia uruchomienie usługi podczas rozruchu.

3.7 Sprawdzanie, czy usługa jest włączona

Aby sprawdzić, czy usługa jest włączona (uruchamia się automatycznie), użyj is-enabled:

systemctl is-enabled [service name]

Przykładowe wyjście:

enabled

To szybko informuje o polityce uruchamiania usługi.

4. Użyteczne opcje i zaawansowane techniki dla systemctl

Polecenie systemctl obsługuje nie tylko podstawowe operacje uruchamiania/zatrzymywania, ale także zaawansowane zadania zarządzania. Oto kilka wygodnych opcji i technik, które powinieneś znać.

Wykorzystanie tych funkcji może znacznie poprawić efektywność zarządzania usługami w systemie Linux.

4.1 Wyświetlanie zależności usług

W systemie Linux niektóre usługi zależą od innych jednostek (usług, montowań, celów itp.). Aby sprawdzić zależności, użyj list-dependencies:

systemctl list-dependencies [service name]

Przykład:

systemctl list-dependencies nginx.service

To polecenie pokazuje powiązane jednostki w formacie drzewa — pomocne do analizy kolejności uruchamiania i pośrednich zależności.

4.2 Wyświetlanie zawartości pliku jednostki

Jeśli chcesz sprawdzić szczegóły konfiguracji jednostki, możesz wyświetlić faktyczny plik jednostki:

systemctl cat [service name]

Przykład:

systemctl cat ssh.service

To pokazuje ścieżkę pliku i jego zawartość, umożliwiając szybkie obejrzenie niestandardowych ustawień.

4.3 Przeładowywanie plików jednostek

Jeśli ręcznie zmodyfikujesz plik jednostki, użyj daemon-reload, aby zastosować zmiany:

sudo systemctl daemon-reexec

Lub, częściej:

sudo systemctl daemon-reload

To przeładowuje pliki jednostek w systemd, dzięki czemu zmiany wejdą w życie. Jeśli ustawienia nie wydają się być stosowane, spróbuj najpierw tego polecenia.

4.4 Sprawdzanie logów usługi (suplement)

Chociaż nie jest to polecenie systemctl, journalctl jest przydatne do sprawdzania logów usługi:

journalctl -u [service name]

Przykład:

journalctl -u docker.service

To pozwala na przeglądanie błędów uruchamiania i historii ponownych uruchomień — niezbędny krok w rozwiązywaniu problemów.

5. Częste problemy i rozwiązania

Kiedy zarządzasz usługami za pomocą systemctl, nie zawsze wszystko przebiega zgodnie z planem. Ten rozdział wyjaśnia typowe problemy i sposoby ich rozwiązania.

Przygotuj się na sytuacje typu „usługa nie uruchamia się” lub „nie mogę znaleźć przyczyny”, znając te podstawowe kroki diagnostyczne.

5.1 Rozwiązywanie problemów, gdy usługa nie uruchamia się

Możesz napotkać błędy takie jak:

Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.

Aby zidentyfikować przyczynę, sprawdź następujące kroki w podanej kolejności:

  1. Sprawdź status
    systemctl status [service name]
    
  1. Sprawdź dzienniki błędów
    journalctl -xe
    
  1. Przeładuj pliki jednostek – jeśli właśnie edytowałeś plik jednostki, przeładuj go poleceniem:
    sudo systemctl daemon-reload
    
  1. Sprawdź konflikty portów – zobacz, czy inny proces już używa tego portu:
    sudo netstat -tulnp | grep [port number]
    

5.2 Jak czytać komunikaty o błędach w poleceniu status

Gdy uruchamiasz systemctl status, widzisz stan usługi oraz najnowsze komunikaty dziennika. Na przykład:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code) since Fri 2025-04-18 12:00:00 JST; 5s ago
  Process: 12345 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)

Umożliwia to szybkie wykrycie niepowodzeń (np. „Active: failed”, „status=1/FAILURE”) oraz określenie, który proces zwrócił błąd.

Wiersz Loaded pokazuje ścieżkę do pliku jednostki, co ułatwia zidentyfikowanie pliku konfiguracyjnego do edycji.

5.3 Gdy usługi przerywają działanie nieoczekiwanie

Jeśli usługa uruchamia się, a potem natychmiast się zatrzymuje, typowe przycz to:

  • Błędy w plikach konfiguracyjnych
  • Konflikty portów
  • Brak wymaganych plików lub katalogów
  • Niewystarczające uprawnienia do wykonania

Aby rozwiązać problem, spróbuj wykonać następujące czynności:

  • Sprawdź i zweryfikuj pliki konfiguracyjne (np. nginx -t lub apachectl configtest)
  • Śledź szczegółowe dzienniki za pomocą journalctl -u [service name]
  • Upewnij się, że wymagane katalogi (np. /var/run/xxx) istnieją; w razie potrzeby je utwórz

5.4 Nie można uruchomić usług w stanie masked

Jeśli zobaczysz taki błąd:

Failed to start example.service: Unit example.service is masked.

Usługa znajduje się w stanie masked (całkowicie wyłączona i zablokowana przed uruchomieniem). Odmaskuj ją poleceniem:

sudo systemctl unmask [service name]

Po tym możesz uruchomić usługę jak zwykle.

6. Podsumowanie

Zarządzanie usługami w Linuksie jest nieodłączną częścią codziennej administracji systemem. Polecenie systemctl odgrywa kluczową rolę, umożliwiając przeglądanie list usług i ich efektywne zarządzanie.

W tym artykule omówiono następujące zagadnienia przy użyciu słowa kluczowego „systemctl list”:

Co możesz zrobić za pomocą polecenia systemctl (przegląd)

  • Sprawdź listę usług
  • Wyświetl aktualnie aktywne usługi (list-units --type=service)
  • Wyświetl wszystkie usługi, w tym nieaktywne (--all lub opcje --state=)
  • Pokaż pliki jednostek usług i ich status uruchamiania (list-unit-files)
  • Podstawowe operacje na usługach
  • Uruchamianie, zatrzymywanie, restartowanie i sprawdzanie statusu (start / stop / restart / status)
  • Włączanie/wyłączanie automatycznego uruchamiania (enable / disable / is-enabled)
  • Zaawansowane operacje i rozwiązywanie problemów
  • Sprawdzanie zależności, przeglądanie plików jednostek, przeładowywanie konfiguracji
  • Badanie błędów przy użyciu dzienników i sprawdzania statusu

Najlepsze praktyki zarządzania usługami

  • Zawsze sprawdzaj status przed wprowadzaniem zmian (polecenie status)
  • Znaj swoją sytuację auto‑startu (is-enabled)
  • Po wprowadzeniu zmian zawsze uruchom daemon-reload
  • W razie problemów sprawdzaj dzienniki za journalctl

Skrupulatne kontrole tego typu zapewniają stabilne działanie usług i szybsze rozwiązywanie problemów w administracji systemem Linux.

Dalsza nauka

Jeśli chcesz pogłębić wiedzę, rozważ zgłębienie tematów takich jak:

  • cele systemd (i różnice w stosunku do poziomów uruchamiania)
  • Zaplanowane zadania przy użyciu systemd-timer
  • Jak tworzyć i zarządzać własnymi plikami jednostek

7. Najczęściej Zadawane Pytania (FAQ)

Ten rozdział podsumowuje najczęściej zadawane pytania i odpowiedzi dotyczące polecenia systemctl oraz listowania usług. Nawet jeśli znasz podstawy, przejrzyj je dla szybkiego odniesienia.

P1. Jaka jest różnica między poleceniami systemctl a service?

O1.
systemctl jest poleceniem zarządzania usługami opartym na systemd i jest standardem w większości nowoczesnych dystrybucji Linuksa (Ubuntu, CentOS, Fedora itp.).
Natomiast service pochodzi ze starszego systemu SysVinit. Choć czasami jest zachowywane ze względów kompatybilności, zaleca się używanie systemctl w środowiskach systemd.

P2. Jaka jest różnica między list-units a list-unit-files?

O2.

  • list-units wyświetla obecnie załadowane jednostki (aktywne lub wcześniej używane).
  • list-unit-files wymienia wszystkie pliki jednostek oraz ich status włączenia/wyłączenia. To jak różnica między „co jest uruchomione teraz” a „co jest skonfigurowane do uruchomienia”.

P3. Czy mogę uruchomić usługę w stanie „static”?

O3.
Tak, możesz ręcznie start usługę w stanie static, ale nie możesz jej „, aby uruchamiała się automatycznie. Dzieje się tak, ponieważ usługi statyczne są przeznaczone do uruchamiania jako zależności innych jednostek.

P4. Nie mogę uruchomić zamaskowanej usługi. Co zrobić?

O4.
masked oznacza „całkowicie wyłączone”. Odmaskuj za pomocą:

sudo systemctl unmask [service name]

Po tym możesz uruchomić ją normalnie.

P5. Czy istnieje interfejs graficzny do wyświetlania statusu usług?

O5.
W zależności od dystrybucji, narzędzia takie jak gnome-system-monitor, KSysGuard lub Cockpit mogą pozwolić sprawdzić status usług w GUI. Jednak dla zaawansowanych operacji systemctl pozostaje najpewniejszą metodą.

P6. Gdzie powinienem umieścić własne pliki jednostek?

O6.
Zazwyczaj umieszcza się je w /etc/systemd/system/. Po edycji nie zapomnij wykonać:

sudo systemctl daemon-reload

Następnie zarządzaj jak zwykle przy pomocy start lub enable.

侍エンジニア塾