- 1 1. Úvod
- 2 2. Jak vypsat služby pomocí systemctl
- 3 3. Základní správa služeb pomocí systemctl
- 4 4. Užitečné volby a pokročilé techniky pro systemctl
- 5 5. Časté problémy a řešení
- 6 6. Shrnutí
- 7 7. Často kladené otázky (FAQ)
- 7.1 Q1. Jaký je rozdíl mezi příkazy systemctl a service?
- 7.2 Q2. Jaký je rozdíl mezi list-units a list-unit-files?
- 7.3 Q3. Můžu spustit službu ve „statickém“ stavu?
- 7.4 Q4. Nemohu spustit maskovanou službu. Co mám dělat?
- 7.5 Q5. Existuje GUI pro výpis stavu služby?
- 7.6 Q6. Kam umístit vlastní unit soubory?
1. Úvod
Při používání Linuxu existuje mnoho situací, kdy můžete chtít zkontrolovat stav služeb nebo vypsat všechny běžící procesy. V takových případech je příkaz systemctl extrémně užitečný.
Tento příkaz interaguje s „systemd“, systémem inicializace a správcem služeb na Linuxu, a poskytuje širokou škálu funkcí, jako je kontrola stavu služeb (jednotek), spouštění, zastavování, restartování a vypsání služeb.
Zvláště pokud jde o „vypsání pomocí systemctl“, můžete pochopit strukturu svého systému z různých úhlů – nejen aktuálně aktivní služby, ale i neaktivní nebo služby nastavené na automatické spuštění.
Tato sekce krátce načrtne základy toho, co je „systemctl“, a vysvětlí, co se naučíte v tomto článku.
Co je systemctl?
systemctl je standardní nástroj pro ovládání a kontrolu různých „jednotek“, jako jsou služby, cíle a body připojení na distribucích Linuxu založených na systemd.
Například ho používáte k spuštění nebo zastavení služeb jako Apache (httpd) nebo SSH, nebo k vypsání stavu těchto služeb.
Vztah mezi systemd a systemctl
systemd je jádrový systém pro bootovací procesy a správu služeb na Linuxu, který nahrazuje starší nástroje jako SysVinit a Upstart. systemctl je nástroj příkazového řádku, který interaguje přímo se systemd.
Jinými slovy, pokud je systemd „řídícím“, pak systemctl působí jako „operátor“, který posílá instrukce.
Co se naučíte v tomto článku
Tento článek odpovídá na následující běžné otázky:
- Jak mohu vypsat všechny aktuálně běžící služby?
- Jak zahrnout neaktivní služby do seznamu?
- Jak zkontrolovat, které služby jsou povoleny k automatickému spuštění?
- Jak číst a interpretovat výsledky?
Každý příklad příkazu a jeho výstup je pečlivě vysvětlen pro začátečníky, takže se nebojte sledovat až do konce.
2. Jak vypsat služby pomocí systemctl
V administraci Linuxového systému je rychlé pochopení seznamu služeb nezbytné. S příkazem systemctl můžete snadno zobrazit nejen aktuálně aktivní služby, ale i neaktivní a ty nastavené na automatické spuštění.
Zde vysvětlíme tři hlavní perspektivy pro vypsání služeb:
- Seznam aktivních služeb
- Seznam všech služeb (včetně neaktivních)
- Seznam souborů jednotek služeb (včetně nastavení spuštění)
2.1 Vypsání aktuálně aktivních služeb
K zkontrolování toho, které služby „běží“ na vašem systému, použijte tento základní příkaz:
systemctl list-units --type=service
Tento příkaz zobrazí seznam aktuálně aktivních (běžících) služeb. Výstup obsahuje následující sloupce:
| Column | Description |
|---|---|
| UNIT | Name of the service (e.g., ssh.service) |
| LOAD | Whether the unit file is loaded |
| ACTIVE | Service status (e.g., active, inactive, failed) |
| SUB | Detailed status (e.g., running, exited, dead) |
| DESCRIPTION | Brief description of the service |
Tyto informace vám pomohou pochopit, například, zda nginx aktuálně běží nebo jaké služby jsou aktivní.
2.2 Vypsání všech služeb, včetně neaktivních
Ve výchozím nastavení list-units zobrazuje pouze aktuálně aktivní služby. K zahrnutí neaktivních služeb přidejte volbu --all:
systemctl list-units --type=service --all
Tato volba vám umožní vidět služby ve stavu „inactive“ nebo ty, které nikdy nebyly spuštěny.
Pokud chcete výsledky dále zúžit, použijte volbu --state= k filtrování podle specifického stavu:
systemctl list-units --type=service --state=inactive
To je užitečné, když chcete zkontrolovat pouze zastavené služby, například.
2.3 Vypsání souborů jednotek služeb
Pokud chcete vědět nejen aktuální stav, ale i které služby jsou povoleny a nastaveny na automatické spuštění, použijte následující příkaz:
systemctl list-unit-files --type=service
To zobrazí seznam souborů jednotek služeb (konfiguračních souborů) a umožní vám zkontrolovat jejich stav povolení/zakázání (enabled, disabled, atd.).
| STATE Value | Description |
|---|---|
| enabled | Automatically enabled at boot |
| disabled | Not enabled at boot; must be started manually |
| static | Started as a dependency of other units; cannot be enabled/disabled directly |
| masked | Explicitly disabled and cannot be started (protected) |
Prohlížení tohoto seznamu vám pomůže vizuálně pochopit, které služby se spouštějí při bootu a zda některé nebyly omylem maskovány.
3. Základní správa služeb pomocí systemctl
Příkaz systemctl nejen kontroluje stav služby, ale také umožňuje službu spustit, zastavit, restartovat a povolit nebo zakázat. Zde jsou základní operace často používané při správě Linuxových systémů.
Ovládání těchto příkazů je nezbytné pro každodenní správu serverů a řešení problémů.
3.1 Spuštění služby
Pro ruční spuštění konkrétní služby použijte podpříkaz start:
sudo systemctl start [service name]
Například pro spuštění Apache (httpd):
sudo systemctl start httpd.service
Služba se spustí okamžitě. Pokud chcete, aby po restartu systému pokračovala, použijte také enable (viz níže).
3.2 Zastavení služby
Pro zastavení služby použijte tento příkaz:
sudo systemctl stop [service name]
Příklad:
sudo systemctl stop sshd.service
Služba zůstane zastavena, dokud ji výslovně znovu nespustíte.
3.3 Restartování služby
Pro restartování služby (například po změně konfigurace) použijte:
sudo systemctl restart [service name]
Příklad:
sudo systemctl restart nginx.service
Restart vždy nejprve zastaví a poté spustí službu, bez ohledu na její aktuální stav.
3.4 Kontrola stavu služby
Pro podrobnou kontrolu stavu služby použijte podpříkaz status:
systemctl status [service name]
Příklad:
systemctl status mysql.service
Zobrazí aktuální aktivní stav, ID procesu (PID), souhrn logu a další informace – velmi užitečné při řešení problémů.
3.5 Povolení služby pro automatické spuštění
Aby se služba spouštěla automaticky při bootování, použijte podpříkaz enable:
sudo systemctl enable [service name]
Příklad:
sudo systemctl enable docker.service
Nyní se služba spustí automaticky při dalším startu systému.
3.6 Zakázání automatického spouštění služby
Pro zakázání automatického startu použijte příkaz disable:
sudo systemctl disable [service name]
Příklad:
sudo systemctl disable cups.service
Tím zabráníte spuštění služby při bootování.
3.7 Kontrola, zda je služba povolena
Pro zjištění, zda je služba povolena (spouští se automaticky), použijte is-enabled:
systemctl is-enabled [service name]
Ukázkový výstup:
enabled
Rychle vám řekne, jaká je politika spouštění služby.
4. Užitečné volby a pokročilé techniky pro systemctl
Příkaz systemctl podporuje nejen základní operace start/stop, ale také pokročilé úkoly správy. Zde jsou některé praktické volby a techniky, které byste měli znát.
Využití těchto funkcí může výrazně zvýšit efektivitu správy služeb v Linuxu.
4.1 Výpis závislostí služby
V Linuxu některé služby závisí na dalších jednotkách (services, mounts, targets atd.). Pro kontrolu závislostí použijte list-dependencies:
systemctl list-dependencies [service name]
Příklad:
systemctl list-dependencies nginx.service
Tento příkaz zobrazí související jednotky ve stromové struktuře – užitečné pro analýzu pořadí spouštění a nepřímých závislostí.
4.2 Prohlížení obsahu souboru jednotky
Pokud chcete zkontrolovat podrobnosti konfigurace jednotky, můžete zobrazit samotný soubor jednotky:
systemctl cat [service name]
Příklad:
systemctl cat ssh.service
Zobrazí cestu k souboru a jeho obsah, což vám umožní rychle nahlédnout do vlastních nastavení.

4.3 Načtení změn souborů jednotek
Pokud ručně upravíte soubor jednotky, použijte daemon-reload k aplikaci změn:
sudo systemctl daemon-reexec
Nebo častěji:
sudo systemctl daemon-reload
Tím se v systemd načtou soubory jednotek znovu, takže změny nabudou účinku. Pokud se nastavení nezdají být aplikována, zkuste nejprve tento příkaz.
4.4 Kontrola logů služby (doplněk)
I když nejde o příkaz systemctl, journalctl je užitečný pro kontrolu logů služby:
journalctl -u [service name]
Příklad:
journalctl -u docker.service
Umožní vám prohlédnout chyby při startu a historii restartů – nezbytný krok při řešení problémů.
5. Časté problémy a řešení
Když spravujete služby pomocí systemctl, věci ne vždy proběhnou podle očekávání. Tato část vysvětluje běžné problémy a jak je vyřešit.
Buďte připraveni na situace jako „služba se nespustí“ nebo „nemůžu najít příčinu“ tím, že znáte tyto základní kroky odstraňování potíží.
5.1 Odstraňování potíží, když se služba nespustí
Můžete vidět chyby jako:
Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.
Pro určení příčiny zkontrolujte následující kroky v uvedeném pořadí:
- Zkontrolovat stav
systemctl status [service name]
- Zkontrolovat chybové záznamy
journalctl -xe
- Znovu načíst soubory jednotek Pokud jste právě upravili soubor jednotky, načtěte jej znovu pomocí:
sudo systemctl daemon-reload
- Zkontrolovat konflikty portů Podívejte se, jestli jiný proces již nepoužívá daný port:
sudo netstat -tulnp | grep [port number]
5.2 Jak číst chybové zprávy v příkazu status
Když spustíte systemctl status, uvidíte stav služby i nejnovější zprávy z logu. Například:
● 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)
To vám umožní rychle odhalit selhání (např. „Active: failed“, „status=1/FAILURE“) a který proces vrátil chybu.
Řádek Loaded ukazuje cestu k souboru jednotky, což usnadňuje identifikaci konfiguračního souboru, který je třeba upravit.
5.3 Když služby neočekávaně skončí
Pokud se služba spustí, ale okamžitě se zastaví, běžné příčiny zahrnují:
- Chyby v konfiguračních souborech
- Konflikty portů
- Chybějící požadované soubory nebo adresáře
- Nedostatečná oprávnění k provedení
Pro vyřešení vyzkoušejte následující:
- Zkontrolovat a ověřit konfigurační soubory (např.
nginx -tneboapachectl configtest) - Sledovat podrobné logy pomocí
journalctl -u [service name] - Zajistit, aby požadované adresáře (např.
/var/run/xxx) existovaly; pokud ne, vytvořte je
5.4 Není možné spustit služby ve stavu masked
Pokud vidíte tuto chybu:
Failed to start example.service: Unit example.service is masked.
Služba je ve stavu masked (zcela zakázána a blokována před spuštěním). Odmaskujte ji pomocí:
sudo systemctl unmask [service name]
Pak můžete službu spustit jako obvykle.
6. Shrnutí
Správa služeb v Linuxu je nezbytnou součástí každodenního provozu systému. Příkaz systemctl hraje centrální roli, umožňuje kontrolovat seznamy služeb a efektivně je spravovat.
Tento článek vysvětlil následující body pomocí klíčového slova „systemctl list“:
Co můžete dělat s příkazem systemctl (rekapitulace)
- Zkontrolovat seznam služeb
- Zobrazit aktuálně aktivní služby (
list-units --type=service) - Vypsat všechny služby včetně neaktivních (
--allnebo--state=možnosti) - Zobrazit soubory jednotek služby a jejich stav při startu (
list-unit-files) - Základní operace se službami
- Spustit, zastavit, restartovat a zkontrolovat stav (start / stop / restart / status)
- Povolit/zakázat automatické spouštění (enable / disable / is-enabled)
- Pokročilé operace a odstraňování potíží
- Kontrolovat závislosti, prohlížet soubory jednotek, znovu načíst konfigurace
- Zkoumat chyby pomocí logů a kontrol stavů
Nejlepší postupy pro správu služeb
- Vždy zkontrolujte stav před provedením změn (příkaz
status) - Znáte stav automatického spouštění (
is-enabled) - Po provedení změn vždy spusťte
daemon-reload - Pro problémy kontrolujte logy pomocí
journalctl
Pečlivé kontroly jako tyto zajišťují stabilní poskytování služeb a rychlejší odstraňování potíží v administraci Linuxových systémů.
Další vzdělávání
Pokud se chcete dozvědět více, zvažte prozkoumání témat jako:
- systemd cíle (a rozdíly oproti runlevelům)
- Plánované úlohy pomocí
systemd-timer - Jak vytvořit a spravovat vlastní unit soubory
7. Často kladené otázky (FAQ)
Tato sekce shrnuje často kladené otázky a odpovědi týkající se příkazu systemctl a výpisu služeb. I když jste s základy spokojeni, projděte si je pro rychlou referenci.
Q1. Jaký je rozdíl mezi příkazy systemctl a service?
A1.
systemctl je příkaz pro správu služeb založený na systemd a je standardem pro většinu moderních distribucí Linuxu (Ubuntu, CentOS, Fedora atd.).
Naopak service pochází ze staršího systému SysVinit. I když je někdy zachován pro kompatibilitu, v prostředí systemd se doporučuje používat systemctl.
Q2. Jaký je rozdíl mezi list-units a list-unit-files?
A2.
list-unitszobrazuje aktuálně načtené jednotky (aktivní nebo dříve použité).list-unit-filesvypisuje všechny unit soubory a jejich stav povolení/zakázání. Přemýšlejte o tom jako o rozdílu mezi „co běží právě teď“ a „co je nastaveno, aby běželo“.
Q3. Můžu spustit službu ve „statickém“ stavu?
A3.
Ano, můžete ručně start službu ve static stavu, ale nemůžete ji enable, aby se spouštěla automaticky. Důvodem je, že statické služby jsou určeny k spuštění jako závislosti jiných jednotek.
Q4. Nemohu spustit maskovanou službu. Co mám dělat?
A4.
masked znamená „úplně zakázáno“. Odmaskujte pomocí:
sudo systemctl unmask [service name]
Po té ji můžete spustit normálně.
Q5. Existuje GUI pro výpis stavu služby?
A5.
V závislosti na vaší distribuci vám nástroje jako gnome-system-monitor, KSysGuard nebo Cockpit mohou umožnit zkontrolovat stav služby přes grafické rozhraní. Pro pokročilé operace však systemctl zůstává nejspolehlivější metodou.
Q6. Kam umístit vlastní unit soubory?
A6.
Obvykle je umístěte do /etc/systemd/system/. Po úpravě nezapomeňte spustit:
sudo systemctl daemon-reload
Pak je spravujte jako obvykle pomocí start nebo enable.

