Az egyik leghatékonyabb és leghasznosabb eszköz a Linux-felhasználók számára, különösen az olyan modern disztribúciók számára, mint az Ubuntu, a systemctl parancsot. Ezt a parancssori segédprogramot általában a systemd-vel, a rendszerrel és a szolgáltatáskezelővel való interakcióra használják.
A paranccsal kezelheti a rendszerszolgáltatásokat, megtekintheti állapotukat, elindíthatja vagy leállíthatja őket, valamint engedélyezheti és letilthatja őket a rendszer indításakor. Elég praktikus, igaz? De ha a systemctl parancs nem található vagy felismerhető, akkor szembe kell néznie a "sudo:systemctl: parancs nem található" hiba.
Tehát beszéljünk arról, hogy mit jelent a „systemctl: parancs nem található” hiba, a különféle okok, amelyek miatt szembesül ezzel a hibával, és hogyan javítható a hiba.
Mit jelent a systemctl: A parancs nem található?
Egyszerűen fogalmazva, a „systemctl: parancs nem található” hiba azt jelenti, hogy a systemctl parancssori segédprogram nem érhető el vagy nem érhető el az aktuális környezetben. Ennek számos oka lehet, amelyek mind arra vezethetők vissza, hogy a környezet nem rendszerkörnyezet, vagy a systemd csomag nincs telepítve a rendszerre.
Alapvetően a systemd csomag nincs telepítve, vagy a Linux disztribúciója vagy verziója nem használja a systemd-t; inkább régebbi szolgáltatáskezelő rendszereket használ, mint például az init.d. Egy másik lehetőség az, hogy a PATH környezeti változó nem tartalmazza azt a könyvtárat, ahol a systemctl található, vagyis a shell nem találja azt.
Most, hogy van egy ötlete, hogy mi lehet a probléma a rendszerrel, ami a „systemctl: parancs nem található” hibához vezet, nézzük meg, hogyan ellenőrizheti, hol van a probléma, és hogyan javíthatja ki.
A systemctl javítása: A parancs nem található hiba
A következő lépésekben ellenőrizni fogjuk, hogy a rendszer telepítve van-e a systemd, és használja-e a systemctl-t, valamint ellenőrizni fogjuk a systemctl elérési útját. Miután ellenőriztük a problémát, megtesszük a szükséges lépéseket a hiba kijavításához.
1. Annak ellenőrzése, hogy a rendszer használja-e a systemd
Mivel az Ubuntu systemctl csak akkor használható, ha telepítve van a systemd csomag, először a következő parancs futtatásával ellenőrizzük, hogy a rendszernek használnia kell-e a systemd-t:
ps -p 1 -o comm=
Vagy ellenőrizheti a systemd verziót a következő paranccsal:
systemd --version
Ha a kimenet systemd, akkor a systemd az init rendszer, és telepíteni kell az Ubuntu systemctl-t. Ha azonban a kimenet init vagy más folyamatkezelő, az azt jelenti, hogy a rendszer alternatív inicializálási rendszert használ, és a systemctl csak akkor fog működni, ha áttér a systemd-re.
Ha régebbi inicializálási rendszereket lát, mint például az Upstart vagy a SysVinit, és a systemd-re szeretne váltani a systemctl használatához, kövesse az alábbi lépéseket:
1. Telepítse a systemctl-t a systemd telepítésével a következő paranccsal:
sudo apt install systemd-sysv
2. Indítsa újra a rendszert a következő parancs futtatásával:
sudo reboot
3. Ellenőrizze, hogy a rendszer most használja-e a systemd-t:
ps -p 1 -o comm=
A kimenetet most rendszerezni kell.
2. A systemd helyes telepítésének biztosítása
Normál körülmények között, amikor a systemd telepítve van, és init rendszerként fut, a systemctl parancsnak megfelelően kell működnie. Ha nem, az azt jelenti, hogy a systemd csomag hiányzik, vagy nem megfelelően van telepítve.
Vegye figyelembe, hogy ha az Ubuntu minimális verzióját használja, például Docker-tárolót vagy felhőpéldányt, akkor előfordulhat, hogy a systemd alapértelmezés szerint nincs telepítve. A systemctl telepítéséhez a systemd telepítésével futtassa a következő parancsokat:
sudo apt update sudo apt install systemd
A telepítés után ellenőrizze, hogy elérhető-e a systemctl parancs.
3. A systemctl PATH ellenőrzése
A systemctl nem található hibával kapcsolatos egyik gyakori probléma az, hogy a systemctl telepíthető, de nem szerepel a rendszer PATH-jában. A következő paranccsal ellenőrizheti, hogy léteznek-e systemd bináris fájlok azokban a tipikus könyvtárakban, ahol találhatók (például /bin, /usr/bin vagy /usr/local/bin):
which systemctl
Ha a systemctl megtalálható a PATH-ban felsorolt bármelyik könyvtárban, akkor a következő kimenetet kell kapnia:
/usr/bin/systemctl
Ha a systemctl nem található a PATH egyik könyvtárában sem, akkor a melyik parancs nem ad vissza semmit.
Előfordulhat azonban, hogy a systemctl továbbra sem működik, bár megtalálható a könyvtáraiban. Ennek az az oka, hogy a systemctl olyan könyvtárban található, amely nem szerepel a PATH-ban. Ebben a helyzetben a következő paranccsal ellenőriznie kell, hogy az a könyvtár, amelyben a systemctl található, a rendszer része-e:
echo $PATH
A kimenetnek valami ilyesminek kell lennie:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Most már csak azt kell ellenőrizni, hogy az a könyvtár, amelyben a systemctl található (amelyet a melyik parancsból kapott), benne van-e az echo $PATH parancs kimenetében felsorolt könyvtárak között.
Ha a systemctl könyvtára nem szerepel az echo $PATH kimenetében, akkor hozzá kell adnia a PATH változóhoz. Ehhez a következő parancsot kell futtatnia:
Mert Bash shell felhasználók, nyissa meg a ~/.bashrc fájlt egy szövegszerkesztőben:
nano ~/.bashrc
Adja hozzá a következő sort a fájl végéhez:
export PATH=$PATH:/usr/bin
Ebben a példában az /usr/bin egy tipikus könyvtár, ahol a systemctl található.
Most mentse és zárja be a fájlt a CTRL + X, majd az Y megnyomásával a megerősítéshez, és az Enter billentyűkombinációval a mentéshez.
Mert Zsh felhasználók, Nyissa meg a ~/.zshrc fájlt egy szövegszerkesztőben:
nano ~/.zshrc
Adja hozzá a következő sort a fájl végéhez:
export PATH=$PATH:/usr/bin
Ebben a példában az /usr/bin egy tipikus könyvtár, ahol a systemctl található.
Most mentse és zárja be a fájlt a CTRL + X, majd az Y megnyomásával a megerősítéshez, és az Enter billentyűkombinációval a mentéshez.
Ha végzett a fenti lépésekkel, az echo $PATH paranccsal ellenőrizze, hogy a systemctl könyvtára hozzá lett-e adva a PATH-hoz. Most már képesnek kell lennie a systemctl futtatására anélkül, hogy megjelenne a „systemctl: parancs nem található” hiba.
4. A systemd újratelepítése
Ha a korábbi javítások nem működnek, és továbbra is a parancs nem található hibával néz szembe, a systemd teljes újratelepítése megoldhatja a problémát. Ehhez futtassa a következő parancsokat:
sudo apt purge systemd sudo apt install systemd
Ezután indítsa újra a rendszert ezzel a paranccsal:
sudo reboot
Ellenőrizze, hogy a systemctl működik-e.
5. Ellenőrizze, hogy a systemd megfelelően van-e konfigurálva
Néha a probléma olyan egyszerű lehet, mint a systemd rosszul konfigurált telepítése, ami „systemctl: parancs nem található” hibát eredményez. A probléma megoldásához mindössze annyit kell tennie, hogy futtassa a következő parancsot, és kész is:
sudo dpkg-reconfigure systemd
6. Elavult Windows-alrendszer Linuxhoz (WSL)
Esetleg Ubuntut használsz alatta WSL (Windows alrendszer Linuxhoz) tudnia kell, hogy a WSL régebbi verziói, például a WSL 1, natívan nem támogatják a systemctl-t, így függetlenül attól, hogy melyik korábbi javítást használja, nem fogja tudni futtatni a systemctl-t.
Ha szeretné kihasználni a systemctl funkcióit, frissítenie kell a WSL 2-re, amely jobban támogatja a systemd-t. Ha nem biztos abban, hogy WSL-t használ-e, a következő paranccsal ellenőrizheti:
uname -a
Ha a kimenet WSL-t említ, akkor ezért látja a „systemctl: parancs nem található” hibát.
7. A sudo szolgáltatás használata a systemctl alternatívájaként
Ha a „systemctl: parancs nem található” hibával néz szembe, mert a rendszer nem használja a systemd parancsot, a sudo service paranccsal kezelheti a szolgáltatásokat. Ez a parancs régebbi indítórendszerekkel működik, mint például a SysVinit vagy az Upstart. Ez azoknál az Ubuntu rendszereknél hasznos, amelyek a systemd helyett init parancsfájlokra támaszkodnak.
Például egy szolgáltatás elindításához futtassa:
sudo service <service_name> start
Végső gondolatok
A systemd és a systemctl parancssori segédprogramja felváltotta a legtöbb régebbi init rendszert, mint például a SysVinit és az Upstart. Noha monolitikus kialakítása és nem Unix filozófiája miatt a systemd nem mindenki számára az init rendszer teája, a systemd továbbra is általánosan elterjedt választás. Tehát remélhetőleg sikerült megoldania a systemctl parancs nem elérhető hibáját, mivel a systemd parancssori segédprogramjának használatának hiánya súlyosan korlátozza annak képességeit.
GYIK
Mi a systemctl és mit jelent a systemctl: Command Not Found?
A systemctl egy parancssori eszköz, amely a systemd rendszert futtató Linux rendszerekben, például az Ubuntuban, szolgáltatások kezelésére szolgál. A „systemctl: parancs nem található” hiba akkor jelentkezik, ha az eszköz nem elérhető vagy nem érhető el, általában azért, mert a rendszer nem használja a systemd-t, vagy a systemd csomag nincs telepítve.
Elérhető a systemctl az Ubuntu összes verzióján?
Nem, a systemctl nem érhető el az Ubuntu minden verzióján. A systemctl a systemd init rendszer része, amely a legtöbb modern Ubuntu verzióban az alapértelmezett (15.04-től). A régebbi verziók vagy bizonyos minimális telepítések alternatív indítórendszereket, például SysVinit vagy Upstart használhatnak helyette.