Een van de handigste en krachtigste tools voor Linux-gebruikers, vooral bij moderne distributies zoals Ubuntu, is de systemctl-commando. Dit command-line hulpprogramma wordt doorgaans gebruikt om te communiceren met systemd, het systeem en de servicebeheerder.
Met dit commando kun je systeemservices beheren, hun status bekijken, ze starten of stoppen, en in- of uitschakelen bij het opstarten van het systeem. Handig toch? Maar als het systemctl-commando niet wordt gevonden of herkend, krijg je te maken met de sudo: systemctl: command not found fout.
Dus, laten we bespreken wat de "systemctl: command not found" foutmelding betekent, de verschillende redenen waarom je deze fout tegenkomt, en hoe je deze fout kunt oplossen.
Wat betekent 'systemctl: opdracht niet gevonden'?
Simpel gezegd betekent de fout "systemctl: command not found" dat het opdrachtregelprogramma systemctl niet beschikbaar of toegankelijk is in de huidige omgeving. Dit kan verschillende oorzaken hebben, maar het komt uiteindelijk altijd neer op één van twee dingen: de omgeving is geen systeemomgeving, of het systemd-pakket is niet geïnstalleerd.
De systemd-package is waarschijnlijk niet geïnstalleerd, of je Linux-distro of -versie gebruikt geen systemd maar een ouder servicebeheer zoals init.d. Een andere mogelijkheid: de PATH-omgevingsvariabele bevat de map met systemctl niet, waardoor je shell het commando niet kan vinden.
Nu je een idee hebt van wat er mis kan zijn met je systeem en de fout "systemctl: command not found" veroorzaakt, kijken we hoe je het probleem kunt opsporen en oplossen.
De fout 'systemctl: opdracht niet gevonden' oplossen
In de volgende stappen controleren we of systemd op je systeem is geïnstalleerd en of systemctl beschikbaar is, en we zoeken het pad van systemctl op. Zodra het probleem is vastgesteld, nemen we de nodige stappen om de fout op te lossen.
1. Controleren of je systeem systemd gebruikt
Omdat Ubuntu systemctl alleen werkt als het systemd-pakket is geïnstalleerd, controleren we eerst of jouw systeem systemd gebruikt. Voer hiervoor het volgende commando uit:
ps -p 1 -o comm=
Of controleer de systemd-versie met het volgende commando:
systemd --version
Als de uitvoer systemd is, gebruikt je systeem systemd als init-systeem en is systemctl beschikbaar. Is de uitvoer init of een andere procesmanager, dan draait je systeem op een alternatief init-systeem en werkt systemctl niet, tenzij je migreert naar systemd.
Als je een ouder init-systeem zoals Upstart of SysVinit gebruikt en wilt overstappen naar systemd om systemctl te kunnen gebruiken, volg dan deze stappen:
1. Installeer systemctl door systemd te installeren met het volgende commando:
sudo apt install systemd-sysv
2. Start je systeem opnieuw op met dit commando:
sudo reboot
3. Controleer of je systeem nu systemd gebruikt:
ps -p 1 -o comm=
De uitvoer zou nu systemd moeten zijn.
2. Controleren of systemd correct is geïnstalleerd
Onder normale omstandigheden werkt het commando systemctl correct wanneer systemd is geïnstalleerd en actief is als init-systeem. Als dat niet het geval is, ontbreekt het systemd-pakket of is het onjuist geïnstalleerd.
Als je een minimale versie van Ubuntu gebruikt, zoals een Docker-container of cloud-instantie, is systemd mogelijk niet standaard geïnstalleerd. Voer de volgende commando's uit om systemctl via systemd te installeren:
sudo apt update sudo apt install systemd
Controleer na de installatie of het commando systemctl beschikbaar is.
3. Het PATH van systemctl controleren
Een veelvoorkomende oorzaak van de foutmelding 'systemctl not found' is dat systemctl wel geïnstalleerd is, maar niet in het PATH van je systeem staat. Gebruik het volgende commando om te controleren of de systemd-binaries aanwezig zijn in de gebruikelijke mappen, zoals /bin, /usr/bin of /usr/local/bin:
which systemctl
Als systemctl gevonden wordt in een van de mappen in je PATH, krijg je een uitvoer zoals deze:
/usr/bin/systemctl
Als systemctl niet gevonden wordt in een van de mappen in PATH, geeft het commando which geen uitvoer terug.
Het is echter mogelijk dat systemctl toch niet werkt, ook al wordt het gevonden in je mappen. Dat kan gebeuren wanneer systemctl zich bevindt in een map die niet is opgenomen in het PATH. In dat geval moet je controleren of de map waarin systemctl zich bevindt deel uitmaakt van je systeem met het volgende commando:
echo $PATH
De uitvoer ziet er ongeveer zo uit:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Controleer nu of de map waarin systemctl staat (die je hebt verkregen via het commando which) voorkomt in de uitvoer van het commando echo $PATH.
Als de map van systemctl niet voorkomt in de uitvoer van echo $PATH, moet je deze toevoegen aan je PATH-variabele. Voer daarvoor het volgende commando uit:
Voor Bash-gebruikers, open het bestand ~/.bashrc in een teksteditor:
nano ~/.bashrc
Voeg de volgende regel toe aan het einde van het bestand:
export PATH=$PATH:/usr/bin
/usr/bin is in dit voorbeeld de map waar systemctl zich bevindt.
Sla het bestand op en sluit het door op CTRL + X te drukken, vervolgens Y om te bevestigen en Enter om op te slaan.
Voor Zsh-gebruikers, open het bestand ~/.zshrc in een teksteditor:
nano ~/.zshrc
Voeg de volgende regel toe aan het einde van het bestand:
export PATH=$PATH:/usr/bin
/usr/bin is in dit voorbeeld de map waar systemctl zich bevindt.
Sla het bestand op en sluit het door op CTRL + X te drukken, vervolgens Y om te bevestigen en Enter om op te slaan.
Gebruik na het uitvoeren van de bovenstaande stappen het commando echo $PATH om te controleren of de map van systemctl is toegevoegd aan je PATH. Je kunt systemctl nu uitvoeren zonder de foutmelding 'systemctl: command not found' te krijgen.
4. Systemd opnieuw installeren
Als de vorige oplossingen niet werken en je nog steeds de foutmelding 'command not found' krijgt, kan een volledige herinstallatie van systemd het probleem oplossen. Voer daarvoor de volgende commando's uit:
sudo apt purge systemd sudo apt install systemd
Start daarna je systeem opnieuw op met dit commando:
sudo reboot
Controleer of systemctl nu correct werkt.
5. Controleren of systemd correct is geconfigureerd
Soms is de oorzaak zo eenvoudig als een verkeerd geconfigureerde installatie van systemd, wat resulteert in de foutmelding 'systemctl: command not found'. Voer het volgende commando uit om dit op te lossen:
sudo dpkg-reconfigure systemd
6. Verouderd Windows-subsysteem voor Linux (WSL)
Als je toevallig Ubuntu gebruikt onder WSL (Windows-subsysteem voor Linux) moet je weten dat oudere versies van WSL, zoals WSL 1, systemctl niet native ondersteunen. Welke van de eerder genoemde oplossingen je ook probeert, je kunt systemctl niet uitvoeren.
Als je gebruik wilt maken van de functies van systemctl, moet je upgraden naar WSL 2, dat betere ondersteuning biedt voor systemd. Weet je niet zeker of je WSL gebruikt? Controleer het met het volgende commando:
uname -a
Als de uitvoer WSL vermeldt, is dat de reden waarom je de foutmelding "systemctl: command not found" ziet.
7. sudo service als alternatief voor systemctl
Als je de foutmelding "systemctl: command not found" krijgt omdat je systeem geen systemd gebruikt, kun je het commando sudo service gebruiken om services te beheren. Dit commando werkt met oudere init-systemen zoals SysVinit of Upstart. Dat is handig voor Ubuntu-systemen die gebruikmaken van init-scripts in plaats van systemd.
Om een service te starten, voer je bijvoorbeeld het volgende uit:
sudo service <service_name> start
Laatste Gedachten
systemd en het bijbehorende commandoregelgereedschap systemctl hebben de meeste oudere init-systemen zoals SysVinit en Upstart vervangen. Hoewel systemd niet voor iedereen de ideale keuze is vanwege het monolithische ontwerp en de niet-Unix-filosofie, geldt het nog altijd als de gangbare standaard. Hopelijk heb je de fout met het niet beschikbare systemctl-commando inmiddels kunnen oplossen, want zonder dit commandoregelgereedschap zijn de mogelijkheden van systemd ernstig beperkt.
Veelgestelde vragen
Wat is systemctl en wat betekent de foutmelding systemctl: Command Not Found?
systemctl is een commandoregelgereedschap voor het beheren van services op Linux-systemen die systemd draaien, zoals Ubuntu. De foutmelding "systemctl: command not found" verschijnt wanneer het gereedschap niet beschikbaar of niet toegankelijk is, meestal omdat het systeem geen systemd gebruikt of het systemd-pakket niet is geïnstalleerd.
Is systemctl beschikbaar op alle versies van Ubuntu?
Nee, systemctl is niet beschikbaar op alle versies van Ubuntu. systemctl maakt deel uit van het systemd-init-systeem, dat standaard is in de meeste moderne versies van Ubuntu (vanaf versie 15.04). Oudere versies of bepaalde minimale installaties kunnen in plaats daarvan alternatieve init-systemen gebruiken, zoals SysVinit of Upstart.