Rychlá oprava k vyřešení problému pomocí příkazu „systemctl“ a zavedení některých účinných alternativ k němu
systemctl
protože je důležitým nástrojem v ekosystému Linuxu, je velmi běžné, že se můžete setkat s chybou „systemctl: příkaz nenalezen“, když se pokusíte spustit systemctl
příkaz. To nemusí platit pro všechny distribuce Linuxu, ale pravděpodobně se s touto chybou můžete setkat, pokud používáte starší verzi distribuce Linuxu, která nepodporuje systemctl
příkaz.
Problém, který se vám vyskytuje, je velmi běžný problém a lze jej snadno opravit. Takže se vůbec nebojte a projděte si celý tutoriál, abyste našli rychlou a snadnou opravu.
Nejprve se pokusíme problém pochopit a poté jej opravit.
Vhledy do systemctl
a systemd
Protože chyba je s odkazem na systemctl
příkazu, bylo by dobré znát základy tohoto příkazu, abyste lépe porozuměli opravě této chyby.
systemctl
je nástroj příkazového řádku, který Linux nabízí, který se používá k monitorování a ovládání jednoho dalšího nástroje příkazového řádku s názvem „systemd
‘. Také kontroluje a kontroluje správce systému spolu s „systemd
‘ užitek.
Obecná syntaxe:
systemctl [volba] [název]
systemd
je balík démonů, knihoven a utilit, které řídí programy, které se spouštějí při startu vašeho systému. systemd
také dokáže zahájit důležitou úlohu, jako je spuštění deníku systémové aktivity.
Tento nástroj funguje jako nástroj pro centrální správu pro většinu operačních systémů založených na Linuxu, ne-li pro všechny.
Hlavní příčina chyby
Nejpravděpodobnější příčinou této chyby může být, že používáte starší verzi distribuce Linuxu. Mnoho starších verzí používá SysV init
místo toho systemd
užitečnost.
systemd
Nástroj chybí v předchozích verzích Linuxu, protože jde o nedávný přírůstek do koše nástrojů poskytovaných Linuxem. systemctl
je kompatibilní s funkcí a monitorováním s systemd
a nebude fungovat s předchozími konfiguracemi jako SysV
init
nebo Povýšenec
.
Pokud nepoužíváte systemd
, pak je tato chyba očekávána. Je to tak jednoduché a přímočaré.
S touto chybou se můžete setkat následujícím způsobem.
gaurav@ubuntu:~$ sudo systemctl start ufw [sudo] heslo pro gaurav: sudo: systemctl: příkaz nenalezen gaurav@ubuntu:~$
Zde jsme se pokusili spustit Ubuntu Fire Wall (ufw
) za použití systemctl
a došlo k chybě „systemctl: příkaz nenalezen“.
Co tedy dělat nyní, pokud si nepřejete měnit svou současnou distribuci Linuxu, která používá jiný nástroj pro centrální správu než? systemd
? Máme pro vás rychlou opravu, která vám umožní ponechat si vaši aktuální distribuci Linuxu a okamžitě opravit vaši chybu.
Podívejme se nyní na opravu.
Oprava chyby „systemctl: příkaz nenalezen“.
Nakonec se nyní podívejme na řešení daného problému po rozboru příčin a základních faktů o problému.
Oprava 1: Výměna systemctl
s servis
příkaz
Jednoduchou opravou dané chyby je použití servis
příkaz místo chyby způsobující systemctl
příkaz.
servis
příkaz pomáhá při spuštění SystemV init
skript, který používají starší distribuce Linuxu. Pokud si nepřejete nainstalovat systemd
ve vašem systému, tato oprava vám jistě bude fungovat.
Můžete spustit, restartovat nebo zastavit jakékoli služby a démony ve vaší distribuci Linuxu pomocí servis
příkaz.
The servis
příkaz a systemctl
příkaz funguje stejným způsobem, jediným rozdílem je zde kompatibilita příkazu s nástroji, které jsou zodpovědné za bezproblémový chod vašeho systému.
Pojďme se podívat na servis
příkaz s ilustrací.
Obecná syntaxe:
sudo služba [název_služby] [akce]
Ve výše uvedené syntaxi je [akce]
prostor může zahrnovat akce jako Start
, stop
, restartovat
nebo postavení
.
Spustíme stejný příkaz pro spuštění ufw
službu pomocí servis
příkaz.
sudo služba ufw start
Výstup:
gaurav@ubuntu:~$ služba sudo ufw start gaurav@ubuntu:~$ služba sudo stav ufw ● ufw.service - Nekomplikovaný firewall Načteno: načteno (/lib/systemd/system/ufw.service; povoleno; přednastaveno dodavatelem: enab Aktivní: aktivní (ukončeno) od Po 2020-09-28 11:22:34 IST; před 1h 5min Dokumenty: man:ufw(8) Proces: 333 ExecStart=/lib/ufw/ufw-init start tichý (code=ukončeno, stav =0/SU Hlavní PID: 333 (kód=ukončeno, stav=0/ÚSPĚCH) 28. září 11:22:34 ubuntu systemd[1]: Spuštěn Nekomplikovaný firewall. Varování: Žurnál byl od spuštění jednotky otočen. Výstup protokolu je neúplné
Tady, servis
místo příkazu systemctl
příkaz a dopadlo to naprosto dobře.
Podívejme se ještě na jeden příklad servis
příkaz, abyste tomu správně porozuměli.
spuštění služby sudo apache2
Výstup:
gaurav@ubuntu:~$ služba sudo stav apache2 ● apache2.service – HTTP server Apache Načten: načten (/lib/systemd/system/apache2.service; povoleno; přednastaveno dodavatele: Drop-In: /lib/systemd/system/ apache2.service.d └─apache2-systemd.conf Aktivní: aktivní (běžící) od Po 2020-09-28 11:22:47 IST; před 1h 16min Proces: 1172 ExecStart=/usr/sbin/apachectl start (code= ukončeno, stav=0/SUCCE Hlavní PID: 1248 (apache2) Úkoly: 55 (limit: 4456) CGroup: /system.slice/apache2.service ├─1248 /usr/sbin/apache2 -k start ├─1249 /usr/ sbin/apache2 -k start └─1250 /usr/sbin/apache2 -k start 28. září 11:22:43 ubuntu systemd[1]: Spouštění serveru Apache HTTP Server... 28. září 11:22:47 ubuntu apachectl[1172 ]: AH00112: Upozornění: DocumentRoot [/var/www Sep 28 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Nelze spolehlivě det 28. září 11:22:47 ubuntu systemd The Apache Started HTTP Server. gaurav@ubuntu:~$
Použili jsme servis
příkaz ke spuštění obslužného programu apache2. Za použití postavení
možnost s servis
příkaz zobrazí aktuální stav služby. Dostaneme podrobnosti, zda běží nebo je mrtvý (neaktivní).
Pojďme nyní použít stop
akce k zastavení služby apache2 pomocí servis
příkaz.
gaurav@ubuntu:~$ služba sudo apache2 stop gaurav@ubuntu:~$ služba sudo apache2 stavové řádky 1--1...přeskakování... ● apache2.service - HTTP server Apache Načten: načten (/lib/systemd/ system/apache2.service; povoleno; přednastaveno dodavatele: povoleno) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Aktivní: neaktivní (mrtvý) od Po 2020-09-28 12 :42:06 IST; Před 1s Proces: 4928 ExecStop=/usr/sbin/apachectl stop (kód=ukončeno, stav=0/ÚSPĚCH) Proces: 1172 ExecStart=/usr/sbin/apachectl start (kód=ukončeno, stav=0/ÚSPĚCH) Hlavní PID : 1248 (kód=ukončeno, stav=0/ÚSPĚCH) 28. září 11:22:43 ubuntu systemd[1]: Spouštění serveru HTTP Apache... 28. září 11:22:47 ubuntu apachectl[1172]: AH00112: Upozornění : DocumentRoot [/var/www/html] neexistuje 28. září 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Nelze spolehlivě určit plně kvalifikovaný název domény serveru pomocí ::1. Nastavte 'S Sep 28 11:22:47 ubuntu systemd[1]: Started The Apache HTTP Server.
Z podrobných příkladů vysvětlených výše můžeme dojít k závěru, že tento příkaz můžeme použít místo příkazu systemctl
příkaz k ovládání a sledování dalších démonů a služeb v rámci distribuce Linuxu.
Oprava 2: Kontrola systemd
balík
Někdy se může stát, že pouze systemd
instalace balíčku může problém vyřešit. Nejprve musíte zkontrolovat stav instalace systemd
balíček ve vašem systému.
Pomocí následujícího příkazu zkontrolujte balíček ve vašem systému.
sudo dpkg -l | grep systemd
Pokud systemd
utilty je již nainstalován, získáte výstup podobný tomu, který je uveden níže.
gaurav@ubuntu:~$ sudo dpkg -l | grep systemd [sudo] heslo pro gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 jednoduchý meziprocesový systém zasílání zpráv (systemd -- uživatelská integrace) ii libnss-systemd:amd64 237-3ubuntu10.42 modul amd64 nss poskytující dynamické rozlišení názvů uživatelů a skupin ii libpam-systemd:amd64 237-3ubuntu10.42 správce systému a služeb amd64 - modul PAM ii libsystemd0:amd64 237-3ubuntu10.42 amd64 systemd knihovna obslužných programů ii libsystemd0:i386 systemd utilita2 knihovna i386 systemuntu 237 ii networkd-dispatcher 1.7-0ubuntu3.3 vše Dispečerská služba pro změny stavu připojení systemd-networkd ri python3-systemd 234-1build1 amd64 Vazby Pythonu 3 pro systemd ii systemd 237-3ubuntu10.42 amd64 systemd-sys a správce služeb amd64 systemd-37 3ubuntu10.42 správce systému a služeb amd64 - odkazy SysV gaurav@ubuntu:~$
Pokud dostanete výstup podobný tomuto, znamená to systemd
je nainstalován ve vašem systému.
Pokud není nainstalován, můžete jej nainstalovat následujícím způsobem.
aktualizace sudo apt-get
sudo apt-get install systemd
Pokud je nainstalován a chyba stále přetrvává, zkuste jej znovu nainstalovat pomocí následujícího příkazu.
sudo apt-get install --reinstall systemd
To vyřeší váš problém instalací systemd
užitečnost.
Závěr
V tomto tutoriálu jsme se naučili opravit „systemctl: command not found“. Můžeme bezpečně konstatovat, že pomocí servis
příkaz místo systemctl
je to dobrý nápad a řeší problém velmi dobře. Můžeme snadno použít servis
příkaz po pochopení názorných příkladů uvedených v tutoriálu.