Seznam služeb systemctl vysvětlen: Jak zobrazit, spravovat a řešit problémy se službami Linuxu

.## 1. Úvod

Při používání Linuxu existuje mnoho situací, kdy chcete zkontrolovat stav služeb nebo zobrazit seznam běžících procesů. V takových případech je příkaz systemctl mimořádně užitečný.

Tento příkaz pracuje s systemd, startovacím systémem a správcem služeb používaným v moderních distribucích Linuxu. Poskytuje širokou škálu funkcí, včetně kontroly stavu služby (jednotky), spouštění, zastavování, restartování služeb a zobrazování seznamů služeb.

Z pohledu „seznamu služeb systemctl“ můžete nejen zobrazit aktuálně aktivní služby, ale také zakázané služby a ty, které jsou nastaveny pro automatické spouštění, což vám umožní pochopit celkovou konfiguraci systému z více úhlů.

Tato kapitola stručně vysvětluje, co je systemctl, a nastíní, co se v tomto článku naučíte.

Co je systemctl?

systemctl je standardní nástroj pro řízení a inspekci různých „jednotek“ jako jsou služby, cíle a přípojné body v distribucích Linuxu založených na systemd.

Například se používá ke spouštění nebo zastavování služeb jako Apache (httpd) a SSH a také k zobrazení jejich stavu v seznamové formě.

Vztah mezi systemd a systemctl

systemd je hlavní mechanismus zodpovědný za startovací procesy Linuxu a správu služeb, nahrazující starší systémy jako SysVinit a Upstart. Nástroj příkazové řádky používaný k interakci se systemd je systemctl.

Jinými slovy, pokud je systemd řídícím střediskem, systemctl funguje jako operátor vydávající instrukce.

Co se v tomto článku naučíte

Tento článek odpovídá na následující otázky:

  • Jak můžete zobrazit seznam aktuálně běžících služeb?
  • Jak zobrazit všechny služby, včetně neaktivních?
  • Jak zkontrolovat, zda se služba spouští automaticky při bootování?
  • Jak interpretovat výstup seznamů služeb?

Pro zajištění srozumitelnosti pro začátečníky v Linuxu jsou poskytnuty podrobné příklady příkazů a vysvětlení výstupů.

2. Jak zobrazit seznam služeb pomocí systemctl

V administraci Linuxových systémů je rychlé pochopení seznamu služeb mimořádně důležité. Pomocí příkazu systemctl můžete snadno zkontrolovat aktivní služby, neaktivní služby a nastavení spouštění.

Tato sekce vysvětluje metody výpisu služeb z následujících tří perspektiv:

  • Seznam aktivních služeb
  • Seznam všech služeb (včetně neaktivních)
  • Seznam souborů jednotek služeb (včetně nastavení spouštění)

2.1 Zobrazení seznamu aktuálně aktivních služeb

Pro kontrolu služeb, které jsou momentálně spuštěny, použijte následující příkaz:

systemctl list-units --type=service

Tento příkaz zobrazí seznam aktivních služeb. Výstup obsahuje následující sloupce:

FieldDescription
UNITService name (e.g., ssh.service)
LOADWhether the unit file is loaded
ACTIVEService state (e.g., active, inactive, failed)
SUBMore detailed status (e.g., running, exited, dead)
DESCRIPTIONService description

Tyto informace vám umožní například zjistit, zda běží nginx, nebo které služby jsou aktuálně aktivní.

2.2 Zobrazení všech služeb včetně neaktivních

Ve výchozím nastavení list-units zobrazuje pouze aktivní služby. Pro zahrnutí neaktivních služeb přidejte volbu --all.

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

Tím se zobrazí neaktivní služby a ty, které nikdy nebyly spuštěny.

Výsledky můžete dále filtrovat podle stavu služby pomocí volby --state=:

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

To je užitečné, když chcete zobrazit pouze zastavené služby.

2.3 Prohlížení seznamu souborů jednotek služeb

Pro kontrolu, které služby jsou při bootování povoleny nebo zakázány, použijte následující příkaz:

systemctl list-unit-files --type=service

Tento příkaz zobrazí všechny soubory jednotek služeb spolu s jejich povoleným nebo zakázaným stavem.

STATEDescription
enabledAutomatically starts at boot
disabledDoes not start automatically
staticCannot be enabled or disabled manually
maskedExplicitly disabled and cannot be started

Tento seznam vám pomůže vizuálně pochopit, které služby se spouštějí při bootování, a identifikovat omylem maskované služby.

3. Základní správa služeb pomocí systemctl

Příkaz systemctl vám umožňuje spouštět, zastavovat, restartovat služby a konfigurovat jejich chování při startu.

3.1 Spuštění služby

sudo systemctl start service-name

Příklad:

sudo systemctl start httpd.service

3.2 Zastavení služby

sudo systemctl stop service-name

Příklad:

sudo systemctl stop sshd.service

3.3 Restartování služby

sudo systemctl restart service-name

Příklad:

sudo systemctl restart nginx.service

3.4 Kontrola stavu služby

systemctl status service-name

Příklad:

systemctl status mysql.service

3.5 Povolení automatického spouštění

sudo systemctl enable service-name

Příklad:

sudo systemctl enable docker.service

3.6 Zakázání automatického spouštění

sudo systemctl disable service-name

Příklad:

sudo systemctl disable cups.service

3.7 Kontrola stavu spouštění

systemctl is-enabled service-name
enabled

4. Užitečné volby systemctl a pokročilé techniky

4.1 Výpis závislostí služby

systemctl list-dependencies service-name

4.2 Zobrazení obsahu souboru jednotky

systemctl cat service-name

4.3 Načtení souborů jednotek znovu

sudo systemctl daemon-reexec
sudo systemctl daemon-reload

4.4 Prohlížení logů služby

journalctl -u service-name

5. Běžné problémy a řešení

5.1 Když služba selže při spuštění

systemctl status service-name
journalctl -xe

5.2 Porozumění chybovým zprávám ve výstupu statusu

● 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)

5.3 Služby, které se okamžitě po spuštění zastaví

  • Chyby v konfiguraci
  • Konflikty portů
  • Chybějící soubory nebo adresáře
  • Nedostatečná oprávnění

5.4 Když je služba maskována

sudo systemctl unmask service-name

6. Shrnutí

Správa služeb je nezbytnou součástí provozu Linuxových systémů a systemctl hraje ústřední roli při řízení a pochopení systémových služeb.

7. Často kladené otázky (FAQ)

Tato sekce odpovídá na běžné otázky týkající se systemctl a správy služeb.

Q1. Jaký je rozdíl mezi systemctl a příkazem service?

A1.
systemctl je příkaz pro správu služeb určený pro systémy založené na systemd a je standardním nástrojem používaným většinou moderních distribucí Linuxu, jako jsou Ubuntu, CentOS a Fedora. Naopak příkaz service byl používán ve starších systémech založených na SysVinit. I když může stále existovat z důvodů kompatibility, používání systemctl je v prostředích systemd důrazně doporučeno.

Q2. Jaký je rozdíl mezi list-units a list-unit-files?

A2.

  • list-units zobrazuje aktuálně načtené jednotky, tj. služby, které běží nebo byly nedávno použity.
  • list-unit-files zobrazuje všechny soubory jednotek a jejich stav povolení (enabled, disabled, atd.). Stručně řečeno, jeden ukazuje, co je aktuálně aktivní, zatímco druhý ukazuje, jak jsou služby nakonfigurovány.

Q3. Lze spustit služby ve statickém stavu?

A3.
Ano, služby ve stavu static lze spustit ručně pomocí start. Nemohou však být povoleny pro automatické spouštění při startu systému. Důvodem je, že statické služby jsou navrženy tak, aby byly spouštěny jako závislosti jiných jednotek.

Q4. Služba je maskována a nelze ji spustit. Co mám dělat?

A4.
masked služba je zcela zakázána a nelze ji spustit. Pro vyřešení situace odmaskujte službu pomocí následujícího příkazu:

sudo systemctl unmask service-name

Po odmaskování můžete službu spustit normálně.

Q5. Existuje grafická metoda pro zobrazení stavu služby?

A5.
V závislosti na distribuci umožňují nástroje jako gnome-system-monitor, KSysGuard nebo Cockpit zobrazit stav služby prostřednictvím grafického rozhraní.
Nicméně pro pokročilé operace, jako je povolení nebo zakázání služeb při spuštění, zůstává systemctl nejspolehlivější metodou.

Q6. Kam bych měl umístit vlastní soubory jednotek?

A6.
Vlastní soubory jednotek se obvykle umisťují do /etc/systemd/system/. Po úpravě nebo přidání souboru jednotky vždy spusťte následující příkaz:

sudo systemctl daemon-reload

Poté můžete službu normálně spravovat pomocí start nebo enable.

侍エンジニア塾