50% sleva všechny plány, omezený čas. Začátek v $2.48/mo
Zbývá 7 min
Servery a OS

Jak opravit systemctl: Chyba příkazu nenalezena na Ubuntu

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

Jedním z nejvýkonnějších a nejužitečnějších nástrojů pro uživatele Linuxu, zejména moderní distribuce, jako je Ubuntu, je příkaz systemctl. Tento nástroj příkazového řádku se obvykle používá k interakci se systemd, systémem a správcem služeb.

Prostřednictvím příkazu můžete spravovat systémové služby, zobrazovat jejich stav, spouštět nebo zastavovat je a povolit a zakázat při startu systému. Docela šikovné, že? Ale pokud příkaz systemctl není nalezen nebo rozpoznán, budete čelit "sudo:systemctl: příkaz nenalezen" chyba.

Pojďme si tedy promluvit o tom, co znamená chyba „systemctl: příkaz nenalezen“, různé důvody, proč se s touto chybou setkáváte, a jak tuto chybu opravit.

Co znamená systemctl: Příkaz nenalezen?

Jednoduše řečeno, chyba „systemctl: příkaz nenalezen“ znamená, že nástroj příkazového řádku systemctl není v aktuálním prostředí dostupný nebo přístupný. To může být způsobeno řadou důvodů, které se všechny vrací buď k prostředí, které je nesystémovým prostředím, nebo k tomu, že balíček systemd není v systému nainstalován.

V zásadě není balíček systemd nainstalován nebo vaše distribuce nebo verze Linuxu nepoužívá systemd; spíše používá starší systémy správy služeb, jako je init.d. Další možností je, že proměnná prostředí PATH nezahrnuje adresář, kde se nachází systemctl, což znamená, že jej váš shell nemůže najít.

Nyní, když máte představu o tom, co by mohlo být s vaším systémem špatně, což vede k chybě „systemctl: příkaz nenalezen“, pojďme se podívat na to, jak můžete ověřit, kde se váš problém nachází a jak jej opravit.

Oprava systemctl: Chyba příkazu nenalezena

V následujících krocích ověříme, zda má váš systém nainstalovaný systemd a používá systemctl nebo ne, a také zkontrolujeme cestu systemctl. Jakmile problém ověříme, podnikneme nezbytné kroky k nápravě chyby.

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

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

ps -p 1 -o comm=

Nebo můžete zkontrolovat 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 nainstalovaný Ubuntu systemctl. Pokud je však výstupem init nebo jiný správce procesů, znamená to, že váš systém používá alternativní inicializační systém a systemctl nebude fungovat, dokud nemigrujete na systemd.

Pokud vidíte starší inicializační systémy 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. Zkontrolujte, zda váš systém nyní používá systemd:

ps -p 1 -o comm=

Výstup by měl být nyní systemizován.

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

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

Všimněte si, že pokud používáte minimální verzi Ubuntu, jako je kontejner Docker nebo cloudová instance, nemusí být systemd ve výchozím nastavení nainstalován. 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 zkontrolujte, zda je k dispozici příkaz systemctl.

3. Kontrola cesty systemctl

Jedním z běžných problémů s chybou systemctl not found je, že systemctl lze nainstalovat, ale není v PATH vašeho systému. Chcete-li zkontrolovat, zda binární soubory systemd existují v typických adresářích, kde se nacházejí, například /bin, /usr/bin nebo /usr/local/bin, můžete použít následující příkaz:

which systemctl

Pokud je systemctl nalezen v některém z vašich adresářů uvedených v PATH, měli byste získat výstup takto:

/usr/bin/systemctl

Pokud systemctl není nalezen v žádném z adresářů v PATH, příkaz which nevrátí nic.

Systemctl však stále nemusí fungovat, i když je ve vašich adresářích nalezen. Je to proto, že systemctl může být umístěn v adresáři, který není zahrnut v PATH. V této situaci budete muset pomocí následujícího příkazu ověřit, zda je adresář, kde se nachází systemctl, součástí vašeho systému:

echo $PATH

Výstup by měl být něco takového:

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

Nyní vše, co musíte udělat, je zkontrolovat, zda adresář, ve kterém se nachází systemctl (který jste získali z příkazu which), je zahrnut v adresářích uvedených ve výstupu příkazu echo $PATH.

Pokud adresář systemctl není zahrnut ve výstupu echo $PATH, budete ho muset přidat do své proměnné PATH. Chcete-li to provést, musíte spustit následující příkaz:

Pro Uživatelé shellu Bash, 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.

Nyní uložte a zavřete soubor stisknutím CTRL + X, poté 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.

Nyní uložte a zavřete soubor stisknutím CTRL + X, poté Y pro potvrzení a Enter pro uložení.

Jakmile provedete výše uvedené kroky, použijte příkaz echo $PATH k ověření, zda byl adresář vašeho systemctl přidán do vaší PATH. Nyní byste měli být schopni spustit systemctl bez spuštění chyby „systemctl: příkaz nenalezen“.

4. Přeinstalace systemd

Pokud předchozí opravy nefungují a stále čelíte chybě příkazu nenalezen, může problém vyřešit úplná přeinstalace systemd. Chcete-li to provést, spusťte následující příkazy:

sudo apt purge systemd
sudo apt install systemd

Poté restartujte systém pomocí tohoto příkazu:

sudo reboot

Zkontrolujte, zda systemctl funguje.

5. Ověření, zda je systemd správně nakonfigurován

Někdy může být problém tak jednoduchý, jako špatně nakonfigurovaná instalace systemd, což vede k chybě „systemctl: příkaz nenalezen“. Vše, co musíte udělat, abyste tento problém vyřešili, je spustit následující příkaz a máte hotovo:

sudo dpkg-reconfigure systemd

6. Zastaralý subsystém Windows pro Linux (WSL)

Při příležitosti, kdy používáte Ubuntu WSL (podsystém Windows pro Linux) měli byste vědět, že starší verze WSL, jako je WSL 1, nativně nepodporují systemctl, takže bez ohledu na to, kterou z předchozích oprav použijete, nebudete moci spustit systemctl.

Pokud chcete využít funkce systemctl, budete muset upgradovat na WSL 2, který má lepší podporu pro systemd. Pokud si nejste jisti, zda používáte WSL či nikoli, můžete to zkontrolovat pomocí následujícího příkazu:

uname -a

Pokud výstup zmiňuje WSL, pak se vám zobrazuje chyba „systemctl: příkaz nenalezen“.

7. Použití služby sudo jako alternativy k systemctl

Pokud se potýkáte s chybou „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 je SysVinit nebo Upstart. To je užitečné pro systémy Ubuntu, které spoléhají na init skripty namísto systemd.

Chcete-li například spustit službu, spustili byste:

sudo service <service_name> start

Závěrečné myšlenky

systemd a jeho nástroj příkazového řádku systemctl nahradil většinu ostatních starších init systémů jako SysVinit a Upstart. Zatímco systemd nemusí být pro každého šálkem čaje init system kvůli svému monolitickému designu a non-Unix filozofii, systemd je stále obecně považován za převládající volbu. Doufejme, že se vám podařilo vyřešit chybu příkazu systemctl nedostupný, protože nemožnost používat nástroj příkazového řádku systemd vážně omezuje jeho možnosti.

FAQ

Co je systemctl a co znamená systemctl: Příkaz nenalezen?

systemctl je nástroj příkazového řádku používaný ke správě služeb v systémech Linux se systémem systemd, jako je Ubuntu. Chyba „systemctl: command not found“ se objeví, 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 k dispozici na všech verzích Ubuntu?

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

Podíl

Více z blogu

Pokračujte ve čtení.

Nejlepší aplikace s vlastním hostováním, které můžete spouštět s Cosmos Cloudem na úvodním obrázku s panely aplikací kolem řídicího panelu Cosmos.
Servery a OS

Nejlepší samoobslužné aplikace, které můžete provozovat s Cosmos Cloud: Soubory, média, hesla, automatizace a další!

Možná jste si nastavili Cosmos Cloud a nyní chcete vidět, jaké aplikace s ním dobře ladí, nebo jste se možná ještě ani nerozhodli pro Cosmos a chcete jen zjistit, jak dobře se hodí k vaší práci

Nick SilverNick Silver 16 minut čtení
Kryt Porttainer vs Cosmos Cloud pro správu Docker Apps s hybridním schématem nastavení a neonovými operacemi vs přístupovými bloky.
Servery a OS

Portainer vs Cosmos Cloud: Nejlepší řešení pro správu aplikací Docker

Pokud již znáte Docker a chcete pouze čistší způsob, jak provozovat rostoucí zásobník aplikací, zde je krátká odpověď na Porttainer vs Cosmos Cloud. Porttainer je silnější volbou pro direc

Nick SilverNick Silver 14 minut čtení
Hlavní grafika Cosmos Cloud vs CasaOS vs Umbrel ukazuje tři samostatně hostované cesty uvnitř jednoho abstraktního světa cloudové sítě.
Servery a OS

Cosmos Cloud vs CasaOS vs Umbrel: Která platforma s vlastním hostitelem vyhovuje vašemu nastavení?

Krátká odpověď zní, že CasaOS je stále tím nejjednodušším místem, kde začít, Umbrel má nejčistší kurátorský pocit a Cosmos Cloud dává větší smysl, jakmile budete chtít přísnější kontrolu nad doménou

Nick SilverNick Silver 11 minut čtení

Jste připraveni k nasazení? Od 2,48 $ měsíčně.

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