Een snelle oplossing om het probleem op te lossen met de opdracht 'systemctl' en de introductie van enkele efficiënte alternatieven ervoor
systeemctl
omdat het een belangrijk hulpprogramma is in het Linux-ecosysteem, is het heel gebruikelijk dat u een probleem "systemctl: command not found" -fout tegenkomt wanneer u probeert de systeemctl
opdracht. Dit is misschien niet het geval voor alle distributies van Linux, maar u kunt deze fout waarschijnlijk tegenkomen wanneer u een oudere versie van de Linux-distributie gebruikt die de systeemctl
opdracht.
Het probleem dat zich voordoet, is een veel voorkomend probleem en kan eenvoudig worden opgelost. Maak je dus helemaal geen zorgen en volg gewoon de volledige tutorial om een snelle en gemakkelijke oplossing te vinden.
We zullen eerst proberen het probleem te begrijpen en het vervolgens op te lossen.
Inzichten in systeemctl
en systemd
Aangezien de fout is met betrekking tot de systeemctl
commando, zou het goed zijn om de basis van dit commando te kennen om de oplossing voor deze fout beter te begrijpen.
systeemctl
is een opdrachtregelprogramma dat Linux aanbiedt, dat wordt gebruikt om een ander opdrachtregelprogramma met de naam 'systemd
‘. Het inspecteert en controleert ook de systeembeheerder samen met de 'systemd
' nutsvoorziening.
Algemene syntaxis:
systemctl [optie] [naam]
systemd
is een bundel van daemons, bibliotheken en hulpprogramma's die de programma's besturen die worden uitgevoerd wanneer uw systeem opstart. systemd
slaagt er ook in om een belangrijke taak te starten, zoals het starten van een dagboek van systeemactiviteit.
Dit hulpprogramma fungeert als het centrale beheerprogramma voor de meeste, zo niet alle, op Linux gebaseerde besturingssystemen.
Hoofdoorzaak van de fout
De meest waarschijnlijke oorzaak van deze fout kan zijn dat u een oudere versie van de Linux-distributie gebruikt. Veel van de oudere versies gebruiken de SysV init
in plaats van de systemd
nutsvoorziening.
systemd
hulpprogramma is afwezig in de vorige Linux-versies omdat het een recente toevoeging is aan de mand met hulpprogramma's die door Linux worden geleverd. systeemctl
is compatibel om te functioneren en te monitoren met de systemd
hulpprogramma en zal niet werken met de vorige configuraties zoals SysV
in het
of Parvenu
.
Als u niet gebruikt systemd
, dan wordt deze fout verwacht. Zo simpel en duidelijk is het.
U kunt deze fout op de volgende manier tegenkomen.
gaurav@ubuntu:~$ sudo systemctl start ufw [sudo] wachtwoord voor gaurav: sudo: systemctl: commando niet gevonden gaurav@ubuntu:~$
Hier hebben we geprobeerd de Ubuntu Fire Wall te starten (ufw
) de ... gebruiken systeemctl
command en stuitte op de "systemctl: command not found"-fout.
Dus wat moet u nu doen als u uw huidige Linux-distributie, die een ander centraal beheerprogramma gebruikt, niet wilt wijzigen? systemd
? Welnu, we hebben een snelle oplossing voor u waarmee u uw huidige Linux-distributie kunt behouden en uw fout in een mum van tijd kunt oplossen.
Laten we nu de fix bekijken.
Fix "systemctl: opdracht niet gevonden" fout
Laten we tot slot nu kijken naar de oplossing van het probleem in kwestie na analyse van de oorzaken en basisfeiten over het probleem.
Oplossing 1: vervangen systeemctl
met dienst
opdracht
Een eenvoudige oplossing voor de betreffende fout is het gebruik van de dienst
commando in plaats van de fout die het veroorzaakt systeemctl
opdracht.
dienst
commando helpt bij het uitvoeren van de SystemV init
script dat wordt gebruikt door de oudere Linux-distributies. Als u de systemd
hulpprogramma op uw systeem, zal deze oplossing zeker voor u werken.
U kunt alle services en daemons op uw Linux-distributie starten, herstarten of stoppen met behulp van de dienst
opdracht.
De dienst
commando en de systeemctl
opdrachtfunctie op dezelfde manier, is het enige verschil hier de compatibiliteit van de opdracht met de hulpprogramma's die verantwoordelijk zijn voor het soepel werken van uw systeem.
Laten we eens kijken dienst
opdracht met een illustratie.
Algemene syntaxis:
sudo-service [service_name] [actie]
In de bovenstaande syntaxis, de [actie]
ruimte kan acties bevatten zoals begin
, stoppen
, herstarten
of toestand
.
We voeren dezelfde opdracht uit om de . te starten ufw
service met behulp van de dienst
opdracht.
sudo-service ufw start
Uitgang::
gaurav@ubuntu:~$ sudo-service ufw start gaurav@ubuntu:~$ sudo-service ufw-status ● ufw.service - Ongecompliceerde firewall Geladen: geladen (/lib/systemd/system/ufw.service; ingeschakeld; leveranciervoorinstelling: enab Actief: actief (verlaten) sinds ma 2020-09-28 11:22:34 IST; 1u 5min geleden Docs: man:ufw(8) Proces: 333 ExecStart=/lib/ufw/ufw-init start stil (code=exited, status =0/SU Hoofd-PID: 333 (code=exited, status=0/SUCCESS) 28 sep 11:22:34 ubuntu systemd [1]: Gestart Ongecompliceerde firewall. Waarschuwing: Journaal is gedraaid sinds de unit werd gestart. Logoutput is incompleet
Hier de dienst
commando wordt gebruikt in plaats van de systeemctl
commando en het is helemaal goed gekomen.
Laten we nog een voorbeeld bekijken van de dienst
opdracht om er een goed begrip van te krijgen.
sudo-service apache2 start
Uitgang::
gaurav@ubuntu:~$ sudo-service apache2-status ● apache2.service - De Apache HTTP-server geladen: geladen (/lib/systemd/system/apache2.service; ingeschakeld; leveranciervoorinstelling: Drop-In: /lib/systemd/system/ apache2.service.d └─apache2-systemd.conf Actief: actief (actief) sinds ma 2020-09-28 11:22:47 IST; 1h 16min geleden Proces: 1172 ExecStart=/usr/sbin/apachectl start (code= afgesloten, status=0/SUCCE Hoofd-PID: 1248 (apache2) Taken: 55 (limiet: 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 september 11:22:43 ubuntu systemd[1]: De Apache HTTP-server starten... 28 september 11:22:47 ubuntu apachectl[1172 ]: AH00112: Waarschuwing: DocumentRoot [/var/www 28 sep 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Kon 28 sep niet betrouwbaar det 11:22:47 ubuntu systemd[1]: Gestart met de Apache HTTP Server. gaurav@ubuntu:~$
We hebben gebruik gemaakt van de dienst
commando om het apache2-hulpprogramma te starten. De ... gebruiken toestand
optie met de dienst
commando geeft de huidige status van de service weer. We zullen de details krijgen of het actief is of dood is (inactief).
Laten we nu de gebruiken stoppen
actie om de apache2-service te stoppen met behulp van de dienst
opdracht.
gaurav@ubuntu:~$ sudo-service apache2 stop gaurav@ubuntu:~$ sudo-service apache2-statusregels 1--1...overslaan... ● apache2.service - De Apache HTTP-server geladen: geladen (/lib/systemd/ system/apache2.service; ingeschakeld; vooraf ingestelde leverancier: ingeschakeld) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Actief: inactief (dood) sinds ma 28-09-2020 12 :42:06 IST; 1s geleden Proces: 4928 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) Proces: 1172 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Hoofd-PID : 1248 (code=exited, status=0/SUCCESS) 28 sep 11:22:43 ubuntu systemd[1]: De Apache HTTP-server starten... 28 sep 11:22:47 ubuntu apachectl[1172]: AH00112: Waarschuwing : DocumentRoot [/var/www/html] bestaat niet 28 sep 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Kon de volledig gekwalificeerde domeinnaam van de server niet op betrouwbare wijze bepalen met ::1. Stel de 'S Sep 28 11:22:47 ubuntu systemd [1]: De Apache HTTP-server gestart.
Uit de gedetailleerde voorbeelden die hierboven zijn uitgelegd, kunnen we concluderen dat we dit commando kunnen gebruiken in plaats van de systeemctl
commando om andere daemons en services onder de Linux-distributie te besturen en te bewaken.
Oplossing 2: Controleren op systemd
pakket
Soms kan het zo zijn dat alleen de systemd
pakketinstallatie kan het probleem oplossen. Eerst moet u de installatiestatus van de systemd
pakket op uw systeem.
Gebruik de volgende opdracht om het pakket op uw systeem te controleren.
sudo dpkg -l | grep systeemd
Als de systemd
utilty al is geïnstalleerd, krijgt u een uitvoer die vergelijkbaar is met die hieronder.
gaurav@ubuntu:~$ sudo dpkg -l | grep systemd [sudo] wachtwoord voor gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 eenvoudig interprocess messaging-systeem (systemd --user integratie) ii libnss-systemd:amd64 237-3ubuntu10.42 amd64 nss-module die dynamische gebruikers- en groepsnaamresolutie ii libpam-systemd:amd64 237-3ubuntu10.42 amd64 systeem- en servicemanager - PAM-module ii libsystemd0:amd64 237-3ubuntu10.42 amd64 systemd-hulpprogrammabibliotheek ii libsystemd0:i386 237-3ubuntu10.42 i386 systemd-hulpprogrammabibliotheek ii networkd-dispatcher 1.7-0ubuntu3.3 all Dispatcher-service voor systemd-networkd verbindingsstatuswijzigingen ri python3-systemd 234-1build1 amd64 Python 3 bindingen voor systemd ii systemd 237-3ubuntu10.42 amd64 systeem- en servicemanager ii systemd-sysv 237- 3ubuntu10.42 amd64 systeem- en servicemanager - SysV-links gaurav@ubuntu:~$
Als u een uitvoer krijgt die vergelijkbaar is met deze, betekent dit dat: systemd
op uw systeem is geïnstalleerd.
Als het niet is geïnstalleerd, kunt u het op de volgende manier installeren.
sudo apt-get update
sudo apt-get install systemd
Als het is geïnstalleerd en de fout blijft bestaan, probeer het dan opnieuw te installeren met behulp van de volgende opdracht.
sudo apt-get install --reinstall systemd
Dit lost uw probleem op door de systemd
nutsvoorziening.
Gevolgtrekking
We hebben in deze tutorial geleerd om de "systemctl: command not found" te repareren. We kunnen gerust concluderen dat het gebruik van de dienst
commando in plaats van de systeemctl
is een goed idee en lost het probleem zeer goed op. We kunnen gemakkelijk gebruik maken van de dienst
commando na het begrijpen van de illustratieve voorbeelden die in de zelfstudie worden getoond.