Hoe de "Systemctl Command Not Found"-fout in Linux op te lossen

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 SysVin 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.