L'un des outils les plus puissants et les plus pratiques pour les utilisateurs de Linux, en particulier pour les distributions modernes comme Ubuntu, est le commande systemctl. Cet utilitaire de ligne de commande est généralement utilisé pour interagir avec systemd, le système et le gestionnaire de services.
Grâce à la commande, vous pouvez gérer les services système, afficher leur état, les démarrer ou les arrêter, ainsi que les activer et les désactiver au démarrage du système. Plutôt pratique, non ? Mais si la commande systemctl n’est pas trouvée ou reconnue, vous allez faire face au « sudo : systemctl : commande introuvable » erreur.
Parlons donc de ce que signifie l'erreur « systemctl : commande introuvable », des différentes raisons pour lesquelles vous êtes confronté à cette erreur et de la manière de corriger cette erreur.
Que signifie systemctl : commande introuvable ?
En termes simples, l'erreur « systemctl : command not found » signifie que l'utilitaire de ligne de commande systemctl n'est pas disponible ou accessible dans l'environnement actuel. Cela peut être dû à une multitude de raisons, qui reviennent toutes soit au fait que l'environnement est un environnement non système, soit au package systemd qui n'est pas installé sur le système.
Fondamentalement, le package systemd n'est pas installé ou votre distribution ou version Linux n'utilise pas systemd ; il utilise plutôt des systèmes de gestion de services plus anciens comme init.d. Une autre possibilité est que la variable d'environnement PATH n'inclut pas le répertoire dans lequel se trouve systemctl, ce qui signifie que votre shell ne peut pas le trouver.
Maintenant que vous avez une idée de ce qui pourrait ne pas fonctionner avec votre système, conduisant à l'erreur « systemctl : commande introuvable », voyons comment vous pouvez vérifier où se situe votre problème et comment le résoudre.
Correction de systemctl : erreur de commande introuvable
Dans les étapes suivantes, nous allons vérifier si systemd est installé sur votre système et utilise systemctl ou non, ainsi que vérifier le chemin de systemctl. Une fois que nous aurons vérifié le problème, nous prendrons les mesures nécessaires pour corriger l’erreur.
1. Vérifier si votre système utilise systemd
Étant donné qu'Ubuntu systemctl ne peut être utilisé que si le package 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=
Ou vous pouvez vérifier la version de systemd avec la commande suivante :
systemd --version
Si la sortie est systemd, alors systemd est votre système d'initialisation et Ubuntu systemctl doit être installé. Cependant, si la sortie est 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 à moins que vous ne migiez vers systemd.
Si vous voyez des systèmes d'initialisation plus anciens comme Upstart ou SysVinit et que vous 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 désormais systemd :
ps -p 1 -o comm=
La sortie devrait être systemd maintenant.
2. S'assurer que systemd est correctement installé
Dans des circonstances normales, lorsque systemd est installé et s'exécute en tant que système d'initialisation, la commande systemctl devrait fonctionner correctement. Si ce n’est pas le cas, cela signifie que le package systemd est manquant ou mal installé.
Notez que si vous utilisez une version minimale d'Ubuntu, telle qu'un conteneur Docker ou une instance cloud, systemd n'a peut-être pas été 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 si la commande systemctl est disponible.
3. Vérification du PATH de systemctl
Un problème courant avec l’erreur systemctl not found est que systemctl pourrait être installé, mais il ne se trouve pas dans le PATH de votre système. Pour vérifier si les binaires systemd existent ou non dans les répertoires typiques où ils se trouvent, comme /bin, /usr/bin ou /usr/local/bin, vous pouvez utiliser la commande suivante :
which systemctl
Si systemctl est trouvé dans l'un de vos répertoires répertoriés dans PATH, vous devriez obtenir une sortie comme celle-ci :
/usr/bin/systemctl
Si systemctl n'est trouvé dans aucun des répertoires de PATH, la commande which ne renverra rien.
Cependant, systemctl peut toujours ne pas fonctionner même s'il se trouve dans vos répertoires. En effet, systemctl pourrait se trouver dans un répertoire qui n'est pas inclus dans le PATH. Dans cette situation, vous devrez vérifier si le répertoire où se trouve systemctl fait partie de votre système en utilisant la commande suivante :
echo $PATH
Le résultat devrait ressembler à ceci :
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Maintenant, tout ce que vous avez à faire est de vérifier si le répertoire dans lequel réside systemctl (que vous avez obtenu à partir de la commande which) est inclus dans les répertoires répertoriés dans la sortie de la commande echo $PATH.
Si le répertoire de systemctl n'est pas inclus dans la sortie de echo $PATH, vous devrez l'ajouter à votre variable PATH. Pour ce faire, vous devrez exécuter 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 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 que vous avez terminé les étapes ci-dessus, utilisez la commande echo $PATH pour vérifier si le répertoire de votre systemctl a été ajouté à votre PATH. Maintenant, vous devriez pouvoir exécuter systemctl sans rencontrer l'erreur « systemctl : commande introuvable ».
4. Réinstallation de systemd
Si les correctifs précédents ne fonctionnent pas et que vous êtes toujours confronté à l'erreur de commande introuvable, la réinstallation complète de systemd 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 si le systemctl fonctionne.
5. Vérifier que systemd est correctement configuré
Parfois, le problème peut être aussi simple qu'une installation mal configurée de systemd, entraînant une erreur « systemctl : commande introuvable ». Tout ce que vous avez à faire pour résoudre ce problème est d’exécuter la commande suivante, et le tour est joué :
sudo dpkg-reconfigure systemd
6. Sous-système Windows obsolète pour Linux (WSL)
Si vous utilisez Ubuntu sous WSL (sous-système Windows pour Linux) vous devez savoir que les anciennes versions de WSL, telles que WSL 1, ne prennent pas en charge nativement systemctl, donc quel que soit le correctif précédent que vous utilisez, vous ne pourrez pas exécuter systemctl.
Si vous souhaitez profiter des fonctions de systemctl, vous devrez passer à WSL 2, qui prend mieux en charge systemd. Si vous ne savez pas si vous utilisez WSL ou non, vous pouvez vérifier en utilisant la commande suivante :
uname -a
Si la sortie mentionne WSL, c'est pourquoi vous voyez l'erreur « systemctl : command not found ».
7. Utilisation du service sudo comme alternative à systemctl
Si vous êtes confronté à l'erreur « systemctl : command not found » parce que votre système n'utilise pas systemd, vous pouvez utiliser la commande sudo service pour gérer les services. Cette commande fonctionne avec les anciens systèmes d'initialisation comme SysVinit ou Upstart. Ceci est utile pour les systèmes Ubuntu qui s'appuient sur des scripts d'initialisation au lieu de systemd.
Par exemple, pour démarrer un service, vous exécuterez :
sudo service <service_name> start
Pensées finales
systemd et son utilitaire de ligne de commande systemctl ont remplacé la plupart des autres systèmes d'initialisation plus anciens comme SysVinit et Upstart. Bien que systemd ne soit peut-être pas la tasse de thé du système d'initialisation de tout le monde en raison de sa conception monolithique et de sa philosophie non Unix, systemd est toujours généralement considéré comme le choix prédominant. J'espère donc que vous avez pu résoudre votre erreur de commande systemctl non disponible, car le fait de ne pas pouvoir utiliser l'utilitaire de ligne de commande de systemd limite considérablement ses capacités.
FAQ
Qu'est-ce que systemctl et que signifie systemctl : commande introuvable ?
systemctl est un outil de ligne de commande utilisé pour gérer les services dans les systèmes Linux exécutant systemd, tels qu'Ubuntu. L'erreur «systemctl: command not found» se produit lorsque l'outil n'est pas disponible ou accessible, généralement parce que le système n'utilise pas systemd ou que le package systemd n'est pas installé.
Systemctl est-il disponible sur toutes les versions d’Ubuntu ?
Non, systemctl n'est pas disponible sur toutes les versions d'Ubuntu. systemctl fait partie du système systemd init, qui est la valeur par défaut dans la plupart des versions modernes d'Ubuntu (à partir de 15.04). Les versions plus anciennes ou certaines installations minimales peuvent utiliser à la place des systèmes d'initialisation alternatifs tels que SysVinit ou Upstart.