Sleva 50% všechny plány, časově omezená nabídka. Od $2.48/mo
7 minut zbývá
Servery a OS

Jak opravit chybu systemctl: Command Not Found na Ubuntu

Nick Stříbro By Nick Stříbro 7 min čtení Aktualizováno 20. února 2025
jak opravit systemctl: příkaz nenalezen

Jeden z nejsilnějších a nejvíce praktických nástrojů pro uživatele Linux, zvlášť u moderních distribucí jako Ubuntu, je systemctl příkaz. Tento nástroj příkazové řádky slouží obvykle ke komunikaci se systemd, správcem systému a služeb.

Příkazem můžete spravovat systémové služby, zobrazit jejich stav, je spouštět či zastavovat a povolovat či zakazovat jejich spuštění při startu systému. Docela užitečné, ne? Pokud ale příkaz systemctl nenajde váš systém nebo ho nerozpozná, narazíte na sudo:systemctl: příkaz nenalezen chyba.

Pojďme si vysvětlit, co znamená chyba "systemctl: command not found", proč se s ní setkáváte a jak ji opravit.

Co znamená chyba systemctl: Command Not Found?

Zjednodušeně řečeno, chyba "systemctl: command not found" znamená, že nástroj příkazové řádky systemctl není v aktuálním prostředí dostupný nebo přístupný. Může to být způsobeno různými důvody, které se vždy vrací k tomu, že prostředí není systémové prostředí, nebo že balíček systemd není v systému nainstalován.

Problém je buď v tom, že balíček systemd není nainstalován, nebo vaše distribuce Linux či její verze systemd nepoužívá. Místo toho se spoléhá na starší systémy správy služeb jako init.d. Další možností je, že proměnná prostředí PATH neobsahuje adresář, kde se nachází systemctl, takže vaše shell jej nemůže najít.

Teď, když máte představu, co by mohlo být špatně s vaším systémem a vést k chybě "systemctl: command not found", se podívejme, jak ověříte, kde přesně je problém, a jak jej vyřešit.

Řešení chyby systemctl: Command Not Found

V následujících krocích ověříme, zda má váš systém nainstalován systemd a používá systemctl, a také zkontrolujeme cestu k systemctl. Jakmile problém ověříme, provedeme potřebné kroky k jeho vyřešení.

1. Ověření, zda váš systém používá systemd

Protože Ubuntu systemctl lze používat pouze v případě, že máte nainstalovaný balíček systemd, nejdříve si ověříme, zda má váš systém používat systemd, spuštěním následujícího příkazu:

ps -p 1 -o comm=

Nebo si můžete ověřit verzi systemd pomocí následujícího příkazu:

systemd --version

Pokud je výstup systemd, pak systemd je váš init systém a měl by mít nainstalován Ubuntu systemctl. Pokud je však výstup init nebo jiný správce procesů, znamená to, že váš systém používá alternativní inicializační systém a systemctl nebude fungovat, dokud se nemigrujete na systemd.

Pokud vidíte starší systémy pro inicializaci jako Upstart nebo SysVinit a chcete přejít na systemd, abyste mohli používat systemctl, postupujte takto:

1. Nainstalujte systemctl instalací systemd pomocí následujícího příkazu:

sudo apt install systemd-sysv

2. Restartujte systém spuštěním tohoto příkazu:

sudo reboot

3. Ověřte, že váš systém nyní používá systemd:

ps -p 1 -o comm=

Výstup by teď měl být systemd.

2. Zajištění správné instalace systemd

Za normálních okolností by měl příkaz systemctl fungovat správně, pokud je systemd nainstalován a běží jako váš init systém. Pokud nefunguje, znamená to, že balíček systemd chybí nebo není správně nainstalován.

Pamatujte, že pokud používáte minimální verzi Ubuntu, například kontejner Docker nebo cloudovou instanci, nemusí být systemd nainstalován ve výchozím nastavení. Chcete-li nainstalovat systemctl prostřednictvím instalace systemd, spusťte následující příkazy:

sudo apt update
sudo apt install systemd

Po instalaci ověřte, zda je příkaz systemctl dostupný.

3. Kontrola systemctl cesty

Běžným problémem chyby systemctl not found je, že systemctl může být nainstalován, ale není v PATH vašeho systému. Chcete-li ověřit, zda existují binární soubory systemd v typických adresářích, jako jsou /bin, /usr/bin nebo /usr/local/bin, použijte následující příkaz:

which systemctl

Pokud se systemctl nachází v některém z adresářů uvedených v PATH, měli byste dostat výstup takto:

/usr/bin/systemctl

Pokud se systemctl nenachází v žádném adresáři v PATH, příkaz which vrátí nic.

Přesto se může stát, že systemctl nebude fungovat, přestože ho systém najde. Důvodem je, že systemctl může být umístěn v adresáři, který není zahrnut v PATH. V tomto případě musíte ověřit, zda je adresář se systemctl součástí cesty vašeho systému. Použijte k tomu následující příkaz:

echo $PATH

Výstup by měl vypadat zhruba takto:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Teď stačí jen ověřit, jestli adresář, kde se systemctl nachází (který jsi získal příkazem which), je zahrnutý v adresářích uvedených ve výstupu příkazu echo $PATH.

Pokud se adresář systemctl nenachází ve výstupu příkazu echo $PATH, musíte ho přidat do vaší PATH proměnné. Spusťte pro to následující příkaz:

Pro Uživatelé Bash shellu, otevřete soubor ~/.bashrc v textovém editoru:

nano ~/.bashrc

Na konec souboru přidejte následující řádek:

export PATH=$PATH:/usr/bin

/usr/bin je typický adresář, kde se v tomto příkladu nachází systemctl.

Soubor nyní uložte a zavřete stisknutím CTRL + X, pak Y pro potvrzení a Enter pro uložení.

Pro Uživatelé Zsh, otevřete soubor ~/.zshrc v textovém editoru:

nano ~/.zshrc

Na konec souboru přidejte následující řádek:

export PATH=$PATH:/usr/bin

/usr/bin je typický adresář, kde se v tomto příkladu nachází systemctl.

Soubor nyní uložte a zavřete stisknutím CTRL + X, pak Y pro potvrzení a Enter pro uložení.

Jakmile dokončíte výše uvedené kroky, ověřte příkazem echo $PATH, zda byl adresář systemctl přidán do vaší PATH. Nyní byste měli být schopni spustit systemctl bez chyby "systemctl: command not found".

4. Přeinstalace systemd

Pokud předchozí řešení nefungují a stále se vám zobrazuje chyba, může vám pomoci úplná přeinstalace systemd. Spusťte následující příkazy:

sudo apt purge systemd
sudo apt install systemd

Poté restartujte systém tímto příkazem:

sudo reboot

Ověřte, zda systemctl funguje.

5. Ověření správné konfigurace systemd

Někdy může být problém způsoben pouhým špatným nastavením systemd, které vede k chybě "systemctl: command not found". Chcete-li problém vyřešit, stačí spustit následující příkaz:

sudo dpkg-reconfigure systemd

6. Zastaralý Windows Subsystem for Linux (WSL)

V případě, že používáte Ubuntu pod WSL (Windows Subsystem for Linux) měli byste vědět, že starší verze WSL, například WSL 1, nativně systemctl nepodporují. Ať už použijete kterékoli z předchozích řešení, systemctl spustit nebudete moci.

Pokud chcete využívat funkce systemctl, musíte upgradovat na WSL 2, která má lepší podporu pro systemd. Pokud si nejste jisti, zda WSL používáte, můžete to ověřit následujícím příkazem:

uname -a

Pokud výstup obsahuje WSL, pak je to důvod, proč se vám zobrazuje chyba "systemctl: command not found".

7. Použití sudo service jako alternativy k systemctl

Pokud se vám zobrazuje chyba "systemctl: command not found" proto, že váš systém nepoužívá systemd, můžete ke správě služeb použít příkaz sudo service. Tento příkaz funguje se staršími init systémy jako SysVinit nebo Upstart. To je užitečné pro systémy Ubuntu, které se spoléhají na init skripty místo systemd.

Chcete-li například spustit službu, spusťte:

sudo service <service_name> start

Závěrečné myšlenky

systemd a jeho příkazový nástroj systemctl nahradily většinu starších init systémů, jako jsou SysVinit a Upstart. Ačkoli systemd není pro každého ideální volbou kvůli své monolitické architektuře a filosofii, která se odklání od tradičních unixových principů, systemd je stále obecně považován za převládající volbu. Doufáme, že se vám podařilo vyřešit chybu systemctl, neboť nedostupnost tohoto nástroje významně omezuje možnosti systemd.

Často kladené otázky

Co je systemctl a co znamená chyba systemctl: Command Not Found?

systemctl je příkazový nástroj používaný ke správě služeb v systémech Linux běžících systemd, například Ubuntu. Chyba "systemctl: command not found" se zobrazí, když nástroj není dostupný nebo přístupný, obvykle proto, že systém nepoužívá systemd nebo není nainstalován balíček systemd.

Je systemctl dostupný ve všech verzích Ubuntu?

Ne, systemctl není dostupný ve všech verzích Ubuntu. systemctl je součástí init systému systemd, který je výchozí v většině moderních verzí Ubuntu (od verze 15.04 dále). Starší verze nebo určité minimální instalace mohou místo toho používat alternativní init systémy jako SysVinit nebo Upstart.

Sdílet

Další z blogu

Čtěte dál.

Obrázek článku o nejlepších self-hosted aplikacích, které lze provozovat s Cosmos Cloud, s panely aplikací kolem dashboardu Cosmos.
Servery a OS

Nejlepší self-hosted aplikace pro Cosmos Cloud: soubory, média, hesla, automatizace a další!

Maybe jste nastavili Cosmos Cloud a teď chcete vědět, které aplikace se k němu hodí, nebo jste se třeba ještě nerozhodli pro Cosmos a jen chcete zjistit, jak dobře zapadne do vašeho pracovního postupu

Nick StříbroNick Stříbro 16 minut čtení
Portainer vs Cosmos Cloud pro správu aplikací Docker: titulní obrázek s diagramem hybridního nastavení a bloky neon ops vs access.
Servery a OS

Portainer vs Cosmos Cloud: Co se lépe hodí pro správu aplikací Docker?

Pokud Docker už znáte a hledáte čistší způsob, jak provozovat rostoucí zásobník aplikací, tady je stručná odpověď na otázku Portainer vs Cosmos Cloud. Portainer je silnější volba pro přím

Nick StříbroNick Stříbro 14 minut čtení
Grafika srovnání Cosmos Cloud vs CasaOS vs Umbrel – tři cesty k self-hostingu v rámci jedné abstraktní cloudové sítě.
Servery a OS

Cosmos Cloud vs CasaOS vs Umbrel: Která self-hostovaná platforma sedí vašemu nastavení?

Stručně řečeno: CasaOS je stále nejjednodušší místo, kde začít, Umbrel působí nejupraveněji a nejpřehledněji a Cosmos Cloud dává větší smysl ve chvíli, kdy chcete mít větší kontrolu nad doménou

Nick StříbroNick Stříbro 11 minut čtení

Připraveni nasadit? Od 2,48 $/měsíc.

Nezávislý cloud od roku 2008. AMD EPYC, NVMe, 40 Gbps. Vrácení peněz do 14 dní.