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 SysV
i 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.