.## 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.
- 1 2. Jak zobrazit seznam služeb pomocí systemctl
- 2 3. Základní správa služeb pomocí systemctl
- 3 4. Užitečné volby systemctl a pokročilé techniky
- 4 5. Běžné problémy a řešení
- 5 6. Shrnutí
- 6 7. Často kladené otázky (FAQ)
- 6.1 Q1. Jaký je rozdíl mezi systemctl a příkazem service?
- 6.2 Q2. Jaký je rozdíl mezi list-units a list-unit-files?
- 6.3 Q3. Lze spustit služby ve statickém stavu?
- 6.4 Q4. Služba je maskována a nelze ji spustit. Co mám dělat?
- 6.5 Q5. Existuje grafická metoda pro zobrazení stavu služby?
- 6.6 Q6. Kam bych měl umístit vlastní soubory jednotek?
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:
| Field | Description |
|---|---|
| UNIT | Service name (e.g., ssh.service) |
| LOAD | Whether the unit file is loaded |
| ACTIVE | Service state (e.g., active, inactive, failed) |
| SUB | More detailed status (e.g., running, exited, dead) |
| DESCRIPTION | Service 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.
| STATE | Description |
|---|---|
| enabled | Automatically starts at boot |
| disabled | Does not start automatically |
| static | Cannot be enabled or disabled manually |
| masked | Explicitly 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-unitszobrazuje aktuálně načtené jednotky, tj. služby, které běží nebo byly nedávno použity.list-unit-fileszobrazuje 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.


