50 % de réduction toutes les offres, durée limitée. À partir de $2.48/mo
7 min restantes
Serveurs et OS

Comment corriger l'erreur systemctl: command not found sur Ubuntu

Nick Silver By Nick Silver 7 min de lecture Mis à jour le 20 fév. 2025
comment corriger l'erreur systemctl: command not found

L'un des outils les plus utiles pour les utilisateurs de Linux, notamment sur les distributions modernes comme Ubuntu, est la commande systemctl. Cet utilitaire en ligne de commande sert principalement à interagir avec systemd, le gestionnaire de système et de services.

Grâce à cette commande, vous pouvez gérer les services système, consulter leur état, les démarrer ou les arrêter, et les activer ou désactiver au démarrage. Très pratique, non ? Mais si la commande systemctl est introuvable ou non reconnue, vous vous retrouverez face à l'erreur "sudo:systemctl: command not found" .

Voyons ce que signifie l'erreur "systemctl: command not found", les différentes raisons pour lesquelles vous la rencontrez, et comment la corriger.

Que signifie l'erreur systemctl : command not found ?

En clair, l'erreur "systemctl: command not found" indique que l'utilitaire systemctl n'est pas disponible ou accessible dans l'environnement actuel. Cela peut avoir plusieurs causes, qui se résument à deux situations : soit l'environnement n'est pas un environnement système standard, soit le paquet systemd n'est pas installé.

Concrètement, soit le paquet systemd n'est pas installé, soit votre distribution ou version de Linux n'utilise pas systemd et repose sur d'anciens systèmes de gestion des services comme init.d. Une autre possibilité : la variable d'environnement PATH n'inclut pas le répertoire où se trouve systemctl, ce qui empêche votre shell de le localiser.

Maintenant que vous avez une idée de ce qui pourrait causer l'erreur « systemctl: command not found » sur votre système, voyons comment identifier la source du problème et le résoudre.

Résoudre l'erreur systemctl: Command Not Found

Dans les étapes suivantes, nous allons vérifier si systemd est installé sur votre système et si systemctl est disponible, ainsi que contrôler le PATH de systemctl. Une fois le problème identifié, nous prendrons les mesures nécessaires pour le corriger.

1. Vérifier si votre système utilise systemd

Comme Ubuntu systemctl ne fonctionne que si le paquet systemd est installé, nous allons d'abord vérifier si votre système est censé utiliser systemd en exécutant la commande suivante :

ps -p 1 -o comm=

Vous pouvez aussi vérifier la version de systemd avec la commande suivante :

systemd --version

Si la sortie affiche systemd, alors systemd est votre système d'initialisation et Ubuntu systemctl devrait être installé. En revanche, si la sortie affiche init ou un autre gestionnaire de processus, cela signifie que votre système utilise un système d'initialisation alternatif, et systemctl ne fonctionnera pas tant que vous n'aurez pas migré vers systemd.

Si vous voyez des systèmes d'initialisation plus anciens comme Upstart ou SysVinit et souhaitez passer à systemd pour utiliser systemctl, suivez ces étapes :

1. Installez systemctl en installant systemd à l'aide de la commande suivante :

sudo apt install systemd-sysv

2. Redémarrez votre système en exécutant cette commande :

sudo reboot

3. Vérifiez que votre système utilise bien maintenant systemd :

ps -p 1 -o comm=

La sortie devrait maintenant afficher systemd.

2. S'assurer que systemd est correctement installé

Dans des conditions normales, lorsque systemd est installé et fonctionne comme système d'initialisation, la commande systemctl devrait fonctionner correctement. Si ce n'est pas le cas, cela signifie que le paquet systemd est absent ou mal installé.

Notez que si vous utilisez une version minimale de Ubuntu, comme un conteneur Docker ou une instance cloud, systemd n'est peut-être pas installé par défaut. Pour installer systemctl via l'installation de systemd, exécutez les commandes suivantes :

sudo apt update
sudo apt install systemd

Une fois installé, vérifiez que la commande systemctl est disponible.

3. Vérifier le PATH de systemctl

Un problème courant lié à l'erreur systemctl not found est que systemctl peut être installé sans pour autant figurer dans le PATH de votre système. Pour vérifier si les binaires de systemd sont présents dans les répertoires habituels, comme /bin, /usr/bin ou /usr/local/bin, utilisez la commande suivante :

which systemctl

Si systemctl est trouvé dans l'un des répertoires listés dans le PATH, vous obtiendrez une sortie de ce type :

/usr/bin/systemctl

Si systemctl n'est trouvé dans aucun des répertoires du PATH, la commande which ne retournera rien.

Cependant, systemctl peut ne pas fonctionner même s'il est trouvé dans vos répertoires. En effet, systemctl peut se trouver dans un répertoire qui n'est pas inclus dans le PATH. Dans ce cas, vous devrez vérifier si le répertoire où se trouve systemctl fait partie de votre PATH en exécutant la commande suivante :

echo $PATH

La sortie devrait ressembler à ceci :

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Il vous suffit ensuite de vérifier si le répertoire dans lequel se trouve systemctl (obtenu via la commande which) figure parmi les répertoires listés dans la sortie de la commande echo $PATH.

Si le répertoire de systemctl n'apparaît pas dans la sortie de echo $PATH, vous devrez l'ajouter à votre variable PATH. Pour ce faire, exécutez la commande suivante :

Pour Utilisateurs du shell Bash, ouvrez le fichier ~/.bashrc dans un éditeur de texte :

nano ~/.bashrc

Ajoutez la ligne suivante à la fin du fichier :

export PATH=$PATH:/usr/bin

/usr/bin est un répertoire typique où se trouve systemctl dans cet exemple.

Maintenant, enregistrez et fermez le fichier en appuyant sur CTRL + X, puis Y pour confirmer, et Entrée pour enregistrer.

Pour Utilisateurs de Zsh, ouvrez le fichier ~/.zshrc dans un éditeur de texte :

nano ~/.zshrc

Ajoutez la ligne suivante à la fin du fichier :

export PATH=$PATH:/usr/bin

/usr/bin est un répertoire typique où se trouve systemctl dans cet exemple.

Maintenant, enregistrez et fermez le fichier en appuyant sur CTRL + X, puis Y pour confirmer, et Entrée pour enregistrer.

Une fois ces étapes terminées, utilisez la commande echo $PATH pour vérifier que le répertoire de systemctl a bien été ajouté à votre PATH. Vous devriez maintenant pouvoir exécuter systemctl sans rencontrer l'erreur « systemctl: command not found ».

4. Réinstaller systemd

Si les corrections précédentes n'ont pas fonctionné et que vous rencontrez toujours l'erreur command not found, réinstaller systemd complètement peut résoudre le problème. Pour ce faire, exécutez les commandes suivantes :

sudo apt purge systemd
sudo apt install systemd

Ensuite, redémarrez votre système avec cette commande :

sudo reboot

Vérifiez que systemctl fonctionne correctement.

5. Vérifier que systemd est correctement configuré

Le problème vient parfois d'une installation mal configurée de systemd, ce qui entraîne l'erreur « systemctl: command not found ». Pour corriger cela, il suffit d'exécuter la commande suivante :

sudo dpkg-reconfigure systemd

6. Sous-système Windows pour Linux (WSL) obsolète

Si vous utilisez Ubuntu sous WSL (sous-système Windows pour Linux) sachez que les anciennes versions de WSL, comme WSL 1, ne prennent pas en charge systemctl nativement. Aucune des corrections précédentes ne vous permettra donc d'exécuter systemctl.

Pour utiliser les fonctionnalités de systemctl, vous devrez passer à WSL 2, qui offre une meilleure prise en charge de systemd. Si vous n'êtes pas sûr d'utiliser WSL, vérifiez-le avec la commande suivante :

uname -a

Si la sortie mentionne WSL, c'est la raison pour laquelle vous voyez l'erreur « systemctl: command not found ».

7. Utiliser sudo service comme alternative à systemctl

Si vous obtenez l'erreur « systemctl: command not found » parce que votre système n'utilise pas systemd, vous pouvez gérer vos services avec la commande sudo service. Cette commande fonctionne avec les anciens systèmes d'init comme SysVinit ou Upstart. Elle est particulièrement utile sur les systèmes Ubuntu qui s'appuient sur des scripts d'init plutôt que sur systemd.

Par exemple, pour démarrer un service, exécutez :

sudo service <service_name> start

Pour conclure

systemd et son utilitaire en ligne de commande systemctl ont remplacé la plupart des anciens systèmes d'init comme SysVinit et Upstart. Bien que systemd ne fasse pas l'unanimité en raison de sa conception monolithique et de sa philosophie non-Unix, il reste le choix le plus répandu. Vous devriez maintenant avoir résolu votre erreur systemctl command not available : ne pas pouvoir utiliser l'utilitaire en ligne de commande de systemd en limite considérablement les capacités.

Questions fréquemment posées

Qu'est-ce que systemctl et que signifie systemctl: Command Not Found ?

systemctl est un outil en ligne de commande permettant de gérer les services sur les systèmes Linux exécutant systemd, comme Ubuntu. L'erreur « systemctl: command not found » apparaît lorsque l'outil n'est pas disponible ou accessible, généralement parce que le système n'utilise pas systemd ou que le paquet systemd n'est pas installé.

Ubuntu dispose-t-il de systemctl dans toutes ses versions ?

Non, systemctl n'est pas disponible dans toutes les versions de Ubuntu. systemctl fait partie du système d'initialisation systemd, qui est le système par défaut dans la plupart des versions modernes de Ubuntu (à partir de la 15.04). Les versions plus anciennes ou certaines installations minimales peuvent utiliser des systèmes d'initialisation alternatifs comme SysVinit ou Upstart.

Partager

Plus d'articles du blog

Continuez la lecture.

Image de couverture des meilleures apps auto-hébergées avec Cosmos Cloud, avec des panneaux d'apps autour d'un tableau de bord Cosmos.
Serveurs et OS

Les meilleures apps auto-hébergées à lancer avec Cosmos Cloud : fichiers, médias, mots de passe, automatisation, et plus

Peut-être avez-vous installé Cosmos Cloud et cherchez les apps qui s'y prêtent, ou peut-être hésitez-vous encore sur Cosmos et voulez voir s'il colle à votre workflow

Nick SilverNick Silver 16 min de lecture
Couverture Portainer vs Cosmos Cloud pour la gestion des apps Docker avec schéma d'installation hybride et blocs ops vs accès en néon.
Serveurs et OS

Portainer ou Cosmos Cloud : le meilleur choix pour gérer vos apps Docker

Si vous connaissez déjà Docker et voulez la voie la plus propre pour faire tourner une stack qui grossit, voici la réponse courte à Portainer vs Cosmos Cloud. Portainer reste le meilleur choix pour la gestion direc

Nick SilverNick Silver 14 min de lecture
Visuel Cosmos Cloud vs CasaOS vs Umbrel montrant trois voies auto-hébergées dans un univers réseau cloud abstrait.
Serveurs et OS

Cosmos Cloud, CasaOS ou Umbrel : quelle plateforme auto-hébergée pour votre installation ?

Réponse courte : CasaOS reste le plus simple pour débuter, Umbrel a l'expérience la plus soignée, et Cosmos Cloud prend tout son sens dès que vous voulez plus de contrôle sur les doma

Nick SilverNick Silver 11 min de lecture

Prêt à déployer ? À partir de 2,48 $/mois.

Cloud indépendant, depuis 2008. AMD EPYC, NVMe, 40 Gbps. Remboursement sous 14 jours.