En hurtig løsning til at løse problemet med 'systemctl'-kommandoen og introduktion af nogle effektive alternativer til det
systemctl
da det er et vigtigt værktøj i Linux-økosystemet, er det meget almindeligt, at du kan støde på et problem "systemctl: command not found", når du prøver at køre systemctl
kommando. Dette er muligvis ikke tilfældet for alle distributioner af Linux, men du kan sandsynligvis støde på denne fejl, når du bruger en ældre version af Linux-distributionen, som ikke understøtter systemctl
kommando.
Det problem, der opstår for dig, er et meget almindeligt problem og kan nemt løses. Så du skal ikke bekymre dig overhovedet, og bare gå gennem den komplette tutorial for at finde en hurtig og nem løsning.
Vi vil prøve at forstå problemet først og derefter løse det.
Indblik i systemctl
og systemd
Da fejlen er med henvisning til systemctl
kommando, ville det være godt at kende det grundlæggende i denne kommando for bedre at forstå rettelsen af denne fejl.
systemctl
er et kommandolinjeværktøj, som Linux tilbyder, som bruges til at overvåge og kontrollere et andet kommandolinjeværktøj ved navn 'systemd
’. Den inspicerer og kontrollerer også systemadministratoren sammen medsystemd
’ nytte.
Generel syntaks:
systemctl [valgmulighed] [navn]
systemd
er et bundt af dæmoner, biblioteker og hjælpeprogrammer, som styrer de programmer, der kører, når dit system starter op. systemd
formår også at igangsætte et vigtigt job som at starte en journal over systemaktivitet.
Dette hjælpeprogram fungerer som det centrale administrationsværktøj for de fleste, hvis ikke alle, Linux-baserede operativsystemer.
Grundårsagen til fejlen
Den mest sandsynlige årsag til denne fejl kan være, at du bruger en ældre version af Linux-distributionen. Mange af de ældre versioner bruger SysV init
i stedet for systemd
nytte.
systemd
hjælpeprogrammet er fraværende i de tidligere Linux-versioner, da det er en nylig tilføjelse til kurven af hjælpeprogrammer leveret af Linux. systemctl
er kompatibel med funktion og overvågning med systemd
og vil ikke fungere med de tidligere konfigurationer som f.eks SysV
i det
eller Opkomling
.
Hvis du ikke bruger systemd
, så forventes denne fejl. Det er så enkelt og ligetil som det.
Du kan støde på denne fejl på følgende måde.
gaurav@ubuntu:~$ sudo systemctl start ufw [sudo] adgangskode til gaurav: sudo: systemctl: kommando blev ikke fundet gaurav@ubuntu:~$
Her forsøgte vi at starte Ubuntu Fire Wall (ufw
) bruger systemctl
kommandoen og stødte på fejlen "systemctl: kommando ikke fundet".
Så hvad skal du gøre nu, hvis du ikke ønsker at ændre din nuværende Linux-distribution, som bruger et andet centralt administrationsværktøj end systemd
? Nå, vi har en hurtig løsning til dig, som vil give dig mulighed for at beholde din nuværende Linux-distribution samt rette din fejl på ingen tid.
Lad os observere rettelsen nu.
Retter fejlen "systemctl: kommando ikke fundet".
Lad os endelig nu se på løsningen af det pågældende problem efter at have analyseret årsagerne og grundlæggende fakta om problemet.
Rettelse 1: Udskiftning systemctl
med service
kommando
En simpel rettelse af den pågældende fejl er at bruge service
kommando i stedet for den fejl, der forårsager systemctl
kommando.
service
kommando hjælper med at køre SystemV init
script som bruges af de ældre Linux-distributioner. Hvis du ikke ønsker at installere systemd
værktøj på dit system, vil denne rettelse helt sikkert fungere for dig.
Du kan starte, genstarte eller stoppe alle tjenester og dæmoner på din Linux-distribution ved hjælp af service
kommando.
Det service
kommando og systemctl
kommandoen fungerer på samme måde, den eneste forskel her er kompatibiliteten af kommandoen med de værktøjer, der er ansvarlige for den yndefulde drift af dit system.
Lad os se service
kommando med en illustration.
Generel syntaks:
sudo service [service_name] [handling]
I ovenstående syntaks er [handling]
rum kan omfatte handlinger som Start
, hold op
, genstart
eller status
.
Vi kører den samme kommando for at starte ufw
tjeneste ved hjælp af service
kommando.
sudo service ufw start
Produktion:
gaurav@ubuntu:~$ sudo service ufw start gaurav@ubuntu:~$ sudo service ufw status ● ufw.service - Ukompliceret firewall Indlæst: indlæst (/lib/systemd/system/ufw.service; aktiveret; forudindstillet leverandør: enab Aktiv: aktiv (afsluttet) siden man 2020-09-28 11:22:34 IST; 1t 5min siden Dokumenter: man:ufw(8) Proces: 333 ExecStart=/lib/ufw/ufw-init start stille (kode=afsluttet, status =0/SU Hoved-PID: 333 (kode=afsluttet, status=0/SUCCES) Sep 28 11:22:34 ubuntu systemd[1]: Startet Ukompliceret firewall. Advarsel: Journalen er blevet roteret siden enheden blev startet. Log output er ufuldstændig
Her, den service
kommandoen bruges i stedet for systemctl
kommando og det fungerede helt fint.
Lad os se endnu et eksempel på service
kommando for at få en ordentlig forståelse af det.
sudo service apache2 start
Produktion:
gaurav@ubuntu:~$ sudo service apache2 status ● apache2.service - Apache HTTP-serveren er indlæst: indlæst (/lib/systemd/system/apache2.service; aktiveret; forudindstillet leverandør: Drop-in: /lib/systemd/system/ apache2.service.d └─apache2-systemd.conf Aktiv: aktiv (kører) siden man 2020-09-28 11:22:47 IST; 1t 16min siden Proces: 1172 ExecStart=/usr/sbin/apachectl start (kode= afsluttet, status=0/SUCCE Hoved-PID: 1248 (apache2) Opgaver: 55 (grænse: 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]: Start af Apache HTTP-serveren... 28. sep. 11:22:47 ubuntu apachectl[1172 ]: AH00112: Advarsel: DocumentRoot [/var/www Sep 28 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Kunne ikke pålideligt det 28. Sep 11:22:47 ubuntu systemd[1]: Startede Apache HTTP Server. gaurav@ubuntu:~$
Vi har brugt service
kommando for at starte apache2-værktøjet. Bruger status
mulighed med service
kommandoen viser den aktuelle status for tjenesten. Vi får detaljerne, om den kører eller er død (inaktiv).
Lad os nu bruge hold op
handling for at stoppe apache2-tjenesten ved hjælp af service
kommando.
gaurav@ubuntu:~$ sudo service apache2 stop gaurav@ubuntu:~$ sudo service apache2 statuslinjer 1--1...springer... ● apache2.service - Apache HTTP-serveren er indlæst: indlæst (/lib/systemd/ system/apache2.service; aktiveret; forudindstillet leverandør: aktiveret) Drop-in: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Aktiv: inaktiv (død) siden man 2020-09-28 12 :42:06 IST; 1s siden Proces: 4928 ExecStop=/usr/sbin/apachectl stop (kode=afsluttet, status=0/SUCCESS) Proces: 1172 ExecStart=/usr/sbin/apachectl start (kode=afsluttet, status=0/SUCCES) Hoved-PID : 1248 (kode=afsluttet, status=0/SUCCES) Sep 28 11:22:43 ubuntu systemd[1]: Start af Apache HTTP Server... Sep 28 11:22:47 ubuntu apachectl[1172]: AH00112: Advarsel : DocumentRoot [/var/www/html] eksisterer ikke 28. september 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Kunne ikke pålideligt bestemme serverens fuldt kvalificerede domænenavn ved hjælp af ::1. Indstil 'S 28. september 11:22:47 ubuntu systemd[1]: Startede Apache HTTP-serveren.
Fra de detaljerede eksempler forklaret ovenfor kan vi konkludere, at vi kan bruge denne kommando i stedet for systemctl
kommando til at kontrollere og overvåge andre dæmoner og tjenester under Linux-distributionen.
Rettelse 2: Tjek efter systemd
pakke
Nogle gange kan det være sådan, at kun systemd
pakkeinstallation kan løse problemet. Først skal du kontrollere installationsstatussen for systemd
pakke på dit system.
Brug følgende kommando til at kontrollere pakken på dit system.
sudo dpkg -l | grep systemd
Hvis systemd
utilty allerede er installeret, vil du få et output svarende til som vist nedenfor.
gaurav@ubuntu:~$ sudo dpkg -l | grep systemd [sudo] adgangskode til gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 simpelt interproces-meddelelsessystem (systemd --brugerintegration) ii libnss-systemd:amd64 237-3ubuntu10.42 amd64 nss-modul, der leverer dynamisk opløsning af bruger- og gruppenavne ii libpam-systemd:amd64 237-3ubuntu10.42 amd64 system- og serviceadministrator - PAM-modul ii libsystemd0:amd64 237-3ubuntu10.42 amd64 systemd-hjælpebibliotek ii libsystemd0:i386 i386 i386-hjælpeprogram li386. ii networkd-dispatcher 1.7-0ubuntu3.3 alle Dispatcher-tjeneste for systemd-networkd forbindelsesstatusændringer ri python3-systemd 234-1build1 amd64 Python 3-bindinger til systemd ii systemd 237-3ubuntu10.42 amd64 systemd-7-svi 3ubuntu10.42 amd64 system og service manager - SysV links gaurav@ubuntu:~$
Hvis du får et output, der ligner dette, betyder det det systemd
er installeret på dit system.
Hvis det ikke er installeret, kan du installere det på følgende måde.
sudo apt-get opdatering
sudo apt-get install systemd
Hvis det er installeret, og fejlen stadig fortsætter, så prøv at geninstallere det ved hjælp af følgende kommando.
sudo apt-get install --geninstaller systemd
Dette vil løse dit problem ved at installere systemd
nytte.
Konklusion
Vi lærte at rette "systemctl: kommandoen ikke fundet" i denne tutorial. Vi kan roligt konkludere, at brug af service
kommando i stedet for systemctl
er en god idé og løser problemet meget godt. Vi kan sagtens bruge service
kommando efter at have forstået de illustrative eksempler vist i selvstudiet.