Eines der leistungsstärksten und praktischsten Tools für Linux-Benutzer, insbesondere moderne Distributionen wie Ubuntu, ist das systemctl-Befehl. Dieses Befehlszeilendienstprogramm wird normalerweise zur Interaktion mit systemd, dem System und dem Dienstmanager verwendet.
Mit dem Befehl können Sie Systemdienste verwalten, ihren Status anzeigen, sie starten oder stoppen und sie beim Systemstart aktivieren und deaktivieren. Ziemlich praktisch, oder? Wenn der Befehl systemctl jedoch nicht gefunden oder erkannt wird, werden Sie mit dem Problem konfrontiert „sudo:systemctl: Befehl nicht gefunden“ Fehler.
Lassen Sie uns also darüber sprechen, was der Fehler „systemctl: command notfound“ bedeutet, welche verschiedenen Gründe es für diesen Fehler gibt und wie Sie ihn beheben können.
Was bedeutet systemctl: Befehl nicht gefunden?
Einfach ausgedrückt bedeutet der Fehler „systemctl: Befehl nicht gefunden“, dass das Befehlszeilendienstprogramm systemctl in der aktuellen Umgebung nicht verfügbar oder zugänglich ist. Dies kann eine Vielzahl von Gründen haben, die alle darauf zurückzuführen sind, dass es sich entweder um eine Nicht-Systemumgebung handelt oder dass das Systemd-Paket nicht auf dem System installiert ist.
Grundsätzlich ist das systemd-Paket nicht installiert oder Ihre Linux-Distribution oder -Version verwendet systemd nicht. Vielmehr werden ältere Service-Management-Systeme wie init.d verwendet. Eine andere Möglichkeit besteht darin, dass die Umgebungsvariable PATH nicht das Verzeichnis enthält, in dem sich systemctl befindet, was bedeutet, dass Ihre Shell es nicht finden kann.
Nachdem Sie nun eine Vorstellung davon haben, was möglicherweise mit Ihrem System nicht in Ordnung ist und zum Fehler „systemctl: Befehl nicht gefunden“ führt, sehen wir uns an, wie Sie überprüfen können, wo Ihr Problem liegt, und wie Sie es beheben können.
Behebung des systemctl: Command Not Found-Fehlers
In den folgenden Schritten überprüfen wir, ob auf Ihrem System systemd installiert ist und systemctl verwendet oder nicht, und überprüfen den Pfad von systemctl. Sobald wir das Problem überprüft haben, werden wir die notwendigen Schritte unternehmen, um den Fehler zu beheben.
1. Überprüfen Sie, ob Ihr System systemd verwendet
Da Ubuntu systemctl nur verwendet werden kann, wenn Sie das systemd-Paket installiert haben, prüfen wir zunächst, ob Ihr System systemd verwenden soll, indem wir den folgenden Befehl ausführen:
ps -p 1 -o comm=
Oder Sie können die Systemd-Version mit dem folgenden Befehl überprüfen:
systemd --version
Wenn die Ausgabe systemd lautet, ist systemd Ihr Init-System und sollte Ubuntu systemctl installiert haben. Wenn die Ausgabe jedoch init oder ein anderer Prozessmanager lautet, bedeutet dies, dass Ihr System ein alternatives Initialisierungssystem verwendet und systemctl nicht funktioniert, es sei denn, Sie migrieren zu systemd.
Wenn Sie ältere Initialisierungssysteme wie Upstart oder SysVinit sehen und zu systemd wechseln möchten, um systemctl zu verwenden, gehen Sie folgendermaßen vor:
1. Installieren Sie systemctl, indem Sie systemd mit dem folgenden Befehl installieren:
sudo apt install systemd-sysv
2. Starten Sie Ihr System neu, indem Sie diesen Befehl ausführen:
sudo reboot
3. Überprüfen Sie, ob Ihr System jetzt systemd verwendet:
ps -p 1 -o comm=
Die Ausgabe sollte jetzt systemd sein.
2. Sicherstellen, dass systemd korrekt installiert ist
Unter normalen Umständen, wenn systemd installiert ist und als Ihr Init-System ausgeführt wird, sollte der Befehl systemctl ordnungsgemäß funktionieren. Ist dies nicht der Fall, bedeutet dies, dass das systemd-Paket entweder fehlt oder nicht ordnungsgemäß installiert ist.
Beachten Sie, dass systemd möglicherweise nicht standardmäßig installiert wurde, wenn Sie eine Minimalversion von Ubuntu verwenden, z. B. einen Docker-Container oder eine Cloud-Instanz. Um systemctl durch die Installation von systemd zu installieren, führen Sie die folgenden Befehle aus:
sudo apt update sudo apt install systemd
Überprüfen Sie nach der Installation, ob der Befehl systemctl verfügbar ist.
3. Überprüfen Sie den PATH von systemctl
Ein häufiges Problem mit dem Fehler „systemctl nicht gefunden“ besteht darin, dass systemctl zwar installiert werden konnte, sich aber nicht im PATH Ihres Systems befindet. Um zu überprüfen, ob systemd-Binärdateien in typischen Verzeichnissen vorhanden sind, in denen sie sich befinden, z. B. /bin, /usr/bin oder /usr/local/bin, können Sie den folgenden Befehl verwenden:
which systemctl
Wenn systemctl in einem Ihrer in PATH aufgeführten Verzeichnisse gefunden wird, sollten Sie eine Ausgabe wie diese erhalten:
/usr/bin/systemctl
Wenn systemctl in keinem der Verzeichnisse in PATH gefunden wird, gibt der Befehl which nichts zurück.
Allerdings funktioniert systemctl möglicherweise immer noch nicht, obwohl es in Ihren Verzeichnissen gefunden wird. Dies liegt daran, dass sich systemctl in einem Verzeichnis befinden könnte, das nicht im PATH enthalten ist. In dieser Situation müssen Sie mithilfe des folgenden Befehls überprüfen, ob das Verzeichnis, in dem sich systemctl befindet, Teil Ihres Systems ist:
echo $PATH
Die Ausgabe sollte etwa so aussehen:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Jetzt müssen Sie nur noch prüfen, ob das Verzeichnis, in dem sich systemctl befindet (das Sie mit dem Befehl „which“ erhalten haben), in den Verzeichnissen enthalten ist, die in der Ausgabe des Befehls „echo $PATH“ aufgeführt sind.
Wenn das Verzeichnis von systemctl nicht in der Ausgabe von echo $PATH enthalten ist, müssen Sie es Ihrer PATH-Variablen hinzufügen. Dazu müssen Sie den folgenden Befehl ausführen:
Für Bash-Shell-Benutzer, öffnen Sie die Datei ~/.bashrc in einem Texteditor:
nano ~/.bashrc
Fügen Sie am Ende der Datei die folgende Zeile hinzu:
export PATH=$PATH:/usr/bin
/usr/bin ist ein typisches Verzeichnis, in dem sich systemctl in diesem Beispiel befindet.
Speichern und schließen Sie nun die Datei, indem Sie STRG + X, dann Y zur Bestätigung und die Eingabetaste zum Speichern drücken.
Für Zsh-Benutzer, Öffnen Sie die Datei ~/.zshrc in einem Texteditor:
nano ~/.zshrc
Fügen Sie am Ende der Datei die folgende Zeile hinzu:
export PATH=$PATH:/usr/bin
/usr/bin ist ein typisches Verzeichnis, in dem sich systemctl in diesem Beispiel befindet.
Speichern und schließen Sie nun die Datei, indem Sie STRG + X, dann Y zur Bestätigung und die Eingabetaste zum Speichern drücken.
Wenn Sie mit den oben genannten Schritten fertig sind, verwenden Sie den Befehl echo $PATH, um zu überprüfen, ob das Verzeichnis Ihres systemctl zu Ihrem PATH hinzugefügt wurde. Jetzt sollten Sie in der Lage sein, systemctl auszuführen, ohne dass der Fehler „systemctl: Befehl nicht gefunden“ auftritt.
4. Systemd neu installieren
Wenn die vorherigen Korrekturen nicht funktionieren und weiterhin der Fehler „Befehl nicht gefunden“ auftritt, kann das Problem möglicherweise durch eine vollständige Neuinstallation von systemd behoben werden. Führen Sie dazu die folgenden Befehle aus:
sudo apt purge systemd sudo apt install systemd
Starten Sie dann Ihr System mit diesem Befehl neu:
sudo reboot
Überprüfen Sie, ob systemctl funktioniert.
5. Überprüfen, ob systemd korrekt konfiguriert ist
Manchmal kann das Problem so einfach sein wie eine falsch konfigurierte Installation von systemd, was zu einem „systemctl: command notfound“-Fehler führt. Um dieses Problem zu beheben, müssen Sie lediglich den folgenden Befehl ausführen, und schon sind Sie fertig:
sudo dpkg-reconfigure systemd
6. Veraltetes Windows-Subsystem für Linux (WSL)
Für den Fall, dass Sie Ubuntu verwenden WSL (Windows-Subsystem für Linux) Sie sollten wissen, dass die älteren Versionen von WSL, wie z. B. WSL 1, systemctl nicht nativ unterstützen, sodass Sie systemctl nicht ausführen können, egal welche der vorherigen Fixes Sie verwenden.
Wenn Sie die Funktionen von systemctl nutzen möchten, müssen Sie ein Upgrade auf WSL 2 durchführen, das eine bessere Unterstützung für systemd bietet. Wenn Sie nicht sicher sind, ob Sie WSL verwenden, können Sie dies mit dem folgenden Befehl überprüfen:
uname -a
Wenn in der Ausgabe WSL erwähnt wird, wird die Fehlermeldung „systemctl: command notfound“ angezeigt.
7. Verwendung des sudo-Dienstes als Alternative zu systemctl
Wenn der Fehler „systemctl: Befehl nicht gefunden“ angezeigt wird, weil Ihr System systemd nicht verwendet, können Sie Dienste mit dem Befehl „sudo service“ verwalten. Dieser Befehl funktioniert mit älteren Init-Systemen wie SysVinit oder Upstart. Dies ist nützlich für Ubuntu-Systeme, die auf Init-Skripte anstelle von systemd angewiesen sind.
Um beispielsweise einen Dienst zu starten, würden Sie Folgendes ausführen:
sudo service <service_name> start
Letzte Gedanken
systemd und sein Befehlszeilendienstprogramm systemctl haben die meisten anderen älteren Init-Systeme wie SysVinit und Upstart ersetzt. Obwohl systemd aufgrund seines monolithischen Designs und der Nicht-Unix-Philosophie möglicherweise nicht jedermanns Sache ist, gilt systemd immer noch als die vorherrschende Wahl. Hoffentlich konnten Sie Ihren Fehler „Systemctl-Befehl nicht verfügbar“ beheben, da die Nichtverwendung des Befehlszeilendienstprogramms von Systemd dessen Fähigkeiten erheblich einschränkt.
FAQ
Was ist systemctl und was bedeutet systemctl: Befehl nicht gefunden?
systemctl ist ein Befehlszeilentool zum Verwalten von Diensten in Linux-Systemen, auf denen systemd ausgeführt wird, wie z. B. Ubuntu. Der Fehler „systemctl: Befehl nicht gefunden“ tritt auf, wenn das Tool nicht verfügbar oder zugänglich ist, normalerweise weil das System systemd nicht verwendet oder das systemd-Paket nicht installiert ist.
Ist systemctl auf allen Ubuntu-Versionen verfügbar?
Nein, systemctl ist nicht auf allen Ubuntu-Versionen verfügbar. systemctl ist Teil des systemd-Init-Systems, das in den meisten modernen Ubuntu-Versionen (ab 15.04) die Standardeinstellung ist. Ältere Versionen oder bestimmte Minimalinstallationen verwenden möglicherweise stattdessen alternative Init-Systeme wie SysVinit oder Upstart.