Så här fixar du felet "Systemctl Command Not Found" i Linux

En snabb lösning för att lösa problemet med kommandot 'systemctl' och introduktion av några effektiva alternativ till det

systemctl eftersom det är ett viktigt verktyg i Linux-ekosystemet, är det mycket vanligt att du kan stöta på ett problem "systemctl: kommando hittades inte" när du försöker köra systemctl kommando. Detta kanske inte är fallet för alla distributioner av Linux, men du kan förmodligen stöta på detta fel när du använder en äldre version av Linux-distributionen som inte stöder systemctl kommando.

Problemet som uppstår för dig är ett mycket vanligt problem och kan enkelt fixas. Så oroa dig inte alls och gå bara igenom hela handledningen för att hitta en snabb och enkel lösning.

Vi kommer att försöka förstå problemet först och sedan åtgärda det.

Insikter i systemctl och systemd

Eftersom felet är med hänvisning till systemctl kommandot skulle det vara bra att känna till grunderna för det här kommandot för att bättre förstå korrigeringen för detta fel.

systemctl är ett kommandoradsverktyg som Linux erbjuder, som används för att övervaka och kontrollera ett annat kommandoradsverktyg som heter 'systemd’. Den inspekterar och kontrollerar också systemhanteraren tillsammans medsystemd' verktyg.

Allmän syntax:

systemctl [alternativ] [namn]

systemd är ett paket med demoner, bibliotek och verktyg som styr de program som körs när ditt system startar upp. systemd lyckas också initiera ett viktigt jobb som att starta en journal över systemaktivitet.

Detta verktyg fungerar som det centrala hanteringsverktyget för de flesta om inte alla Linux-baserade operativsystem.

Grundorsaken till felet

Den mest troliga orsaken till detta fel kan vara att du använder en äldre version av Linux-distributionen. Många av de äldre versionerna använder SysV init istället för systemd verktyg.

systemd verktyg saknas i de tidigare Linux-versionerna eftersom det är ett nyligen tillägg till korgen med verktyg som tillhandahålls av Linux. systemctl är kompatibel att fungera och övervaka med systemd och kommer inte att fungera med tidigare konfigurationer som SysVi det eller Uppkomling.

Om du inte använder systemd, då förväntas detta fel. Så enkelt och okomplicerat är det.

Du kan stöta på detta fel på följande sätt.

gaurav@ubuntu:~$ sudo systemctl start ufw [sudo] lösenord för gaurav: sudo: systemctl: kommandot hittades inte gaurav@ubuntu:~$ 

Här försökte vi starta Ubuntu Fire Wall (ufw) använda systemctl kommandot och stötte på felet "systemctl: kommando hittades inte".

Så, vad ska du göra nu om du inte vill ändra din nuvarande Linux-distribution som använder något annat centralt hanteringsverktyg än systemd? Tja, vi har en snabb lösning för dig som gör att du kan behålla din nuvarande Linux-distribution och åtgärda ditt fel på nolltid.

Låt oss observera fixen nu.

Fixar felet "systemctl: kommando hittades inte".

Slutligen, låt oss nu titta på lösningen av problemet i fråga efter att ha analyserat orsakerna och grundläggande fakta om problemet.

Fix 1: Ersätter systemctl med service kommando

En enkel fix för felet i fråga är att använda service kommando istället för felet som orsakar systemctl kommando.

service kommandot hjälper till att köra SystemV init skript som används av de äldre Linux-distributionerna. Om du inte vill installera systemd verktyget på ditt system, kommer den här fixen säkert att fungera för dig.

Du kan starta, starta om eller stoppa alla tjänster och demoner på din Linux-distribution med hjälp av service kommando.

De service kommandot och systemctl kommando fungerar på samma sätt, den enda skillnaden här är kompatibiliteten för kommandot med de verktyg som är ansvariga för den graciösa driften av ditt system.

Låt oss se service kommando med en illustration.

Allmän syntax:

sudo-tjänst [tjänstnamn] [åtgärd]

I ovanstående syntax är [handling] utrymme kan innehålla åtgärder som Start, sluta, omstart eller status.

Vi kör samma kommando för att starta ufw tjänst som använder service kommando.

sudo service ufw start

Produktion:

gaurav@ubuntu:~$ sudo-tjänst ufw start gaurav@ubuntu:~$ sudo-tjänst ufw status ● ufw.service - Okomplicerad brandvägg Laddad: laddad (/lib/systemd/system/ufw.service; aktiverad; förinställd leverantör: enab Aktiv: aktiv (avslutad) sedan mån 2020-09-28 11:22:34 IST; 1h 5min sedan Dokument: man:ufw(8) Process: 333 ExecStart=/lib/ufw/ufw-init start tyst (kod=avslutad, status =0/SU Huvud-PID: 333 (kod=avslutad, status=0/FRAMGÅNG) 28 september 11:22:34 ubuntu systemd[1]: Startad Okomplicerad brandvägg. Varning: Journalen har roterats sedan enheten startades. Loggutdata är ofullständig

Här, den service kommandot används istället för systemctl kommandot och det gick alldeles utmärkt.

Låt oss se ytterligare ett exempel på service kommando för att få en ordentlig förståelse av det.

sudo-tjänsten apache2 startar

Produktion:

gaurav@ubuntu:~$ sudo tjänst apache2 status ● apache2.service - Apache HTTP-servern laddad: laddad (/lib/systemd/system/apache2.service; aktiverad; leverantörens förinställning: Drop-In: /lib/systemd/system/ apache2.service.d └─apache2-systemd.conf Aktiv: aktiv (kör) sedan mån 2020-09-28 11:22:47 IST; 1h 16min sedan Process: 1172 ExecStart=/usr/sbin/apachectl start (kod= avslutad, status=0/SUCCE Huvud-PID: 1248 (apache2) Uppgifter: 55 (gräns: 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 sep 11:22:43 ubuntu systemd[1]: Starta Apache HTTP-servern... 28 sep 11:22:47 ubuntu apachectl[1172 ]: AH00112: Varning: DocumentRoot [/var/www 28 sep 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Kunde inte tillförlitligt hitta 28 sep 11:22:47 ubuntu systemd[1]: Startade Apache HTTP Server. gaurav@ubuntu:~$ 

Vi har använt service kommandot för att starta apache2-verktyget. Använda status alternativet med service kommandot visar tjänstens aktuella status. Vi kommer att få information om den är igång eller är död (inaktiv).

Låt oss nu använda sluta åtgärd för att stoppa apache2-tjänsten med hjälp av service kommando.

gaurav@ubuntu:~$ sudotjänst apache2 stopp gaurav@ubuntu:~$ sudotjänst apache2 statusrader 1--1...hoppar över... ● apache2.service - Apache HTTP-servern laddad: laddad (/lib/systemd/ system/apache2.service; aktiverad; leverantörsförinställning: aktiverad) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Aktiv: inaktiv (död) sedan mån 2020-09-28 12 :42:06 IST; För 1s sedan Process: 4928 ExecStop=/usr/sbin/apachectl stopp (kod=avslutad, status=0/SUCCESS) Process: 1172 ExecStart=/usr/sbin/apachectl start (kod=avslutad, status=0/SUCCESS) Huvud-PID : 1248 (kod=avslutad, status=0/FRAMGÅNG) 28 sep 11:22:43 ubuntu systemd[1]: Startar Apache HTTP-servern... 28 sep 11:22:47 ubuntu apachectl[1172]: AH00112: Varning : DocumentRoot [/var/www/html] existerar inte 28 september 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Kunde inte tillförlitligt fastställa serverns fullständigt kvalificerade domännamn med ::1. Ställ in 'S Sep 28 11:22:47 ubuntu systemd[1]: Startade Apache HTTP Server.

Från de detaljerade exemplen som förklaras ovan kan vi dra slutsatsen att vi kan använda det här kommandot istället för systemctl kommando för att kontrollera och övervaka andra demoner och tjänster under Linux-distributionen.

Fix 2: Söker efter systemd paket

Ibland kan det vara så att endast systemd paketinstallation kan lösa problemet. Först måste du kontrollera installationsstatusen för systemd paketet på ditt system.

Använd följande kommando för att kontrollera paketet på ditt system.

sudo dpkg -l | grep systemd

Om systemd verktyget redan är installerat får du en utgång liknande den som visas nedan.

gaurav@ubuntu:~$ sudo dpkg -l | grep systemd [sudo] lösenord för gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 enkelt meddelandesystem mellan processer (systemd --användarintegration) ii libnss-systemd:amd64 237-3ubuntu10.42 amd64 nss-modul som tillhandahåller dynamisk användar- och gruppnamnsupplösning ii libpam-systemd:amd64 237-3ubuntu10.42 amd64 system- och servicehanterare - PAM-modul ii libsystemd0:amd64 237-3ubuntu10.42 amd64 systemd-verktygsbibliotek ii libsystemd0:i386 i386 i386 i386-verktygssystemet 23170-238ubun. ii networkd-dispatcher 1.7-0ubuntu3.3 all Dispatcher-tjänst för systemd-networkd anslutningsstatusändringar ri python3-systemd 234-1build1 amd64 Python 3-bindningar för systemd ii systemd 237-3ubuntu10.42 amd64 system- och service manager i2 3ubuntu10.42 amd64 system- och servicehanterare - SysV länkar gaurav@ubuntu:~$ 

Om du får en utgång som liknar denna betyder det det systemd är installerat på ditt system.

Om det inte är installerat kan du installera det på följande sätt.

sudo apt-get uppdatering
sudo apt-get installera systemd

Om det är installerat och felet fortfarande kvarstår, försök sedan installera om det med följande kommando.

sudo apt-get install --installera om systemd

Detta kommer att lösa ditt problem genom att installera systemd verktyg.

Slutsats

Vi lärde oss att fixa "systemctl: kommandot hittades inte" i den här handledningen. Vi kan säkert dra slutsatsen att med hjälp av service kommando istället för systemctl är en bra idé och löser problemet mycket bra. Vi kan enkelt använda service kommandot efter att ha förstått de illustrativa exemplen som visas i handledningen.