Ugrás a fő tartalomra
50% kedvezmény minden csomagra, korlátozott ideig. Már $2.48/mo
7 min left
Szerverek és OS

Hogyan javítsd a systemctl: Command Not Found hibát Ubuntun

Nick Silver Szerző: Nick Silver 7 perc olvasás Frissítve Feb 20, 2025
how to fix systemctl: command not found

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őrizheted 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:

Az 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

Az /usr/bin egy tipikus könyvtár, ahol a systemctl található ebben a példában.

Most mentsd el és zárd be a fájlt a CTRL + X megnyomásával, majd Y a megerősítéshez, és Enter a mentéshez.

Az 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

Az /usr/bin egy tipikus könyvtár, ahol a systemctl található ebben a példában.

Most mentsd el és zárd be a fájlt a CTRL + X megnyomásával, majd Y a megerősítéshez, és Enter a 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

Záró 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?

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.

Share

Több a blogról

Folytassa az olvasást.

Készen áll a telepítésre? Már 2,48 $/hó-tól.

Független felhő 2008 óta. AMD EPYC, NVMe, 40 Gbps. 14 napos pénzvisszafizetési garancia.