Az Linux felhasználók számára, különösen a modern disztribúciók, mint az Ubuntu, az egyik legerősebb és leghasznosabb eszköz a systemctl parancs. Ez a parancssori segédprogram a systemd kezelésére szolgál, amely a rendszer és a szolgáltatáskezelő.
Ezzel a paranccsal kezelheted a rendszerszolgáltatásokat, megtekintheted azok állapotát, elindíthatod vagy leállíthatod őket, valamint engedélyezheted vagy letilthatod őket a rendszer indításakor. Tényleg praktikus, igaz? De ha a systemctl parancs nem található vagy nem ismerhető fel, akkor hibával fogsz szembesülni az sudo:systemctl: parancs nem található hiba.
Szóval, beszéljünk arról, hogy mit jelent a "systemctl: command not found" hiba, milyen különféle okok állhatnak ennek hátterében, és hogyan lehet ezt a hibát kijavítani.
Mit jelent a systemctl: Command Not Found hiba?
Egyszerűen fogalmazva, a „systemctl: command not found" hiba azt jelenti, hogy a systemctl parancssori segédprogram nem érhető el vagy nem hozzáférhető az aktuális környezetben. Ez számos oka lehet, amelyek végül is arra vezetnek vissza, hogy a környezet nem valódi rendszerkörnyezet, vagy a systemd csomag nincs telepítve a rendszerre.
Alapvetően a systemd csomag nincs telepítve, vagy a Linux disztribúciód vagy verziód nem használ systemd-t; ehelyett régebbi szolgáltatáskezelő rendszereket használ, mint 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ó, ami azt jelenti, hogy a shell nem találja meg.
Most hogy van egy ötleted arról, hogy mi lehet a baj a rendszeredben, ami a "systemctl: command not found" hibaüzenethez vezethet, nézzük meg, hogyan tudod ellenőrizni, hol van a probléma és hogyan javíthatod meg.
A systemctl: Parancs nem található hiba javítása
A következő lépésekben ellenőrizni fogjuk, hogy a rendszeredben telepítve van-e a systemd és használja-e a systemctl alkalmazást vagy sem, valamint megvizsgáljuk 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ál-e systemd-et
Mivel az Ubuntu systemctl csak akkor használható, ha telepítve van a systemd csomag, először ellenőrizzük, hogy a rendszerednek szükséges-e a systemd használata a következő parancs futtatásával:
ps -p 1 -o comm=
Vagy ellenőrizheti a systemd verzióját a következő paranccsal:
systemd --version
Ha a kimenet systemd, akkor a systemd az Ön init rendszere, és az Ubuntu systemctl telepítve kell, hogy legyen. Ha azonban a kimenet init vagy egy másik folyamatkezelő, az azt jelenti, hogy a rendszer alternatív inicializálási rendszert használ, és a systemctl nem fog működni, ha nem migrál a systemd-re.
Ha olyan régebbi inicializálási rendszereket látsz, mint az Upstart vagy a SysVinit, és a systemd-re szeretnél váltani a systemctl használatához, kövesd az alábbi lépéseket:
1. Telepítse a systemctl-t a systemd telepítésével a következő parancs használatával:
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 a systemd-t használja:
ps -p 1 -o comm=
A kimenet mostantól systemd legyen.
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 az init rendszerként fut, a systemctl parancsnak helyesen kell működnie. Ha nem így van, akkor az azt jelenti, hogy a systemd csomag hiányzik vagy helytelenül van telepítve.
Vegyük figyelembe, hogy ha az Ubuntu egy minimális verzióját használod, például egy Docker-tárolót vagy felhőbeli példányt, akkor a systemd alapértelmezés szerint lehet, hogy nincs telepítve. A systemctl telepítéséhez a systemd telepítésén keresztül futtasd a következő parancsokat:
sudo apt update sudo apt install systemd
A telepítés után ellenőrizze, hogy a systemctl parancs elérhető-e.
3. A systemctl PATH ellenőrzése
A systemctl not found hibaval kapcsolatos egyik gyakori probléma az, hogy a systemctl telepítve lehet, de nem található a rendszer PATH változójában. Annak ellenőrzésére, hogy a systemd bináris fájlok léteznek-e azokban a tipikus könyvtárakban, ahol általában megtalálhatók, mint a /bin, /usr/bin vagy /usr/local/bin, használhatja a következő parancsot:
which systemctl
Ha a systemctl megtalálható az egyik PATH-ben felsorolt könyvtárban, egy ehhez hasonló kimenetet kell kapnod:
/usr/bin/systemctl
Ha a systemctl nem található a PATH-ban lévő egyik könyvtárban sem, a which parancs nem ad vissza semmit.
Azonban a systemctl előfordulhat, hogy még akkor sem működik, ha megtalálható a könyvtáraiban. Ennek oka az, hogy a systemctl egy olyan könyvtárban lehet, amely nincs szerepeltetve a PATH-ban. Ebben a helyzetben ellenőriznie kell, hogy a systemctl helyét tartalmazó könyvtár része-e a rendszerének, a következő parancs használatával:
echo $PATH
A kimenet nagyjából így kellene kinézzen:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Most már csak annyit kell tenned, hogy ellenőrizd, hogy a systemctl által használt könyvtár (amelyet a which parancsból kaptál) szerepel-e a echo $PATH parancs kimenetében felsorolt könyvtárak között.
Ha a systemctl könyvtára nincs benne az echo $PATH kimenetében, akkor hozzá kell adnia a PATH változóhoz. Ehhez a következő parancsot kell futtatnia:
Számára 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ére:
export PATH=$PATH:/usr/bin
/usr/bin egy tipikus könyvtár, ahol a systemctl található ebben a példában.
Most mentse és zárja be a fájlt a CTRL + X, majd az Y lenyomásával a megerősítéshez, és az Enter megnyomásával mentéshez.
Számára 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ére:
export PATH=$PATH:/usr/bin
/usr/bin egy tipikus könyvtár, ahol a systemctl található ebben a példában.
Most mentse és zárja be a fájlt a CTRL + X, majd az Y lenyomásával a megerősítéshez, és az Enter megnyomásával mentéshez.
Miután elvégezte a fenti lépéseket, használja az echo $PATH parancsot annak ellenőrzésére, hogy a systemctl könyvtára hozzá lett-e adva a PATH-hoz. Most már futtathatja a systemctl-t anélkül, hogy a "systemctl: command not found" hibaüzenetre futna.
4. A systemd újratelepítése
Ha az előző megoldások nem működnek és továbbra is parancs nem található hibát tapasztal, 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őrizd, hogy a systemctl működik-e.
5. A systemd helyes konfigurációjának ellenőrzése
Néha az egyetlen probléma a systemd hibás konfigurációjú telepítése lehet, amely a "systemctl: command not found" hibát eredményezi. Ennek a problémának a megoldásához csak annyit kell tenned, hogy futtatod a következő parancsot, és kész is vagy:
sudo dpkg-reconfigure systemd
6. Elavult Windows Subsystem for Linux (WSL)
Arra az esetre, ha az Ubuntu alatt WSL (Windows alrendszer Linuxhoz) Tudnod kell, hogy a WSL régebbi verziói, például a WSL 1, nem támogatják natívan a systemctl-t, így függetlenül attól, hogy az előző javítások közül melyiket használod, nem lesz képes futtatni a systemctl-t.
Ha szeretné kihasználni a systemctl funkcióit, frissítenie kell a WSL 2-re, amely jobb támogatást nyújt a systemd számára. Ha nem biztos benne, hogy a WSL-t használja-e vagy sem, ezt az alábbi parancs futtatásával ellenőrizheti:
uname -a
Ha a kimenet említi a WSL-t, akkor ez az oka a "systemctl: command not found" hiba megjelenésének.
7. A sudo Service használata alternatívaként a systemctl helyett
Ha a "systemctl: command not found" hibával szembesülsz, mert a rendszered nem használ systemd-t, használhatod a sudo service parancsot a szolgáltatások kezeléséhez. Ez a parancs régebbi init rendszerekkel működik, mint például a SysVinit vagy az Upstart. Ez hasznos az Ubuntu rendszerekhez, amelyek az init szkriptek helyett systemd helyett támaszkodnak.
Például egy szolgáltatás indításához ezt futtatná:
sudo service <service_name> start
Végső gondolatok
A systemd és annak systemctl parancssori segédprogramja felváltotta a legtöbb régebbi init rendszert, mint például a SysVinit és az Upstart. Bár a systemd monolitikus kialakítása és nem Unix-filozófiája miatt nem mindenkinek való, a systemd továbbra is az általánosan elterjedt választásnak tekinthető. Remélhetőleg sikerült megoldanod a systemctl parancs nem elérhető hibát, mivel a systemd parancssori segédprogramjának használata nélkül annak képességei súlyosan korlátozódnak.
Gyakran Ismételt Kérdések
Mi az a systemctl és mit jelent a "systemctl: command not found" hiba?
A systemctl egy parancssori eszköz, amelyet a systemd-t futtató Linux rendszerekben, például az Ubuntu-ban a szolgáltatások kezeléséhez használnak. A "systemctl: command not found" hiba akkor fordul elő, amikor az eszköz nem érhető el vagy nem hozzáférhető, általában azért, mert a rendszer nem használ systemd-t vagy a systemd csomag nincs telepítve.
A systemctl elérhető az Ubuntu összes verziójában?
Nem, a systemctl nem érhető el az Ubuntu összes verziójában. A systemctl a systemd init rendszer része, amely az alapértelmezett a legtöbb modern Ubuntu verzióban (a 15.04-es verzió óta). A régebbi verziók vagy bizonyos minimális telepítések alternatív init rendszereket, például SysVinit vagy Upstart rendszereket használhatnak.