Linux systemctl : Vérifier et gérer les services

systemctl est une commande pour vérifier l'état des services et autres unités gérés par systemd, les démarrer ou les arrêter, et définir s'ils sont activés au démarrage. L'état actuel en cours d'exécution et l'état activé au démarrage sont différents, donc chacun doit être vérifié séparément.

Avant de commencer

systemd est le gestionnaire de système et de services pour Linux, et les unités qu'il gère incluent non seulement les services (.service) mais aussi les minuteries et les sockets. Cet article explique comment gérer les services système sur Linux en utilisant systemd. Il ne peut pas être utilisé tel quel dans des environnements avec d'autres systèmes d'initialisation ou lorsque systemd n'est pas en cours d'exécution. Pour des commandes détaillées, référez-vous au manuel officiel systemctl.

L'exemple apache2.service suivant montre quand Apache est installé sur Ubuntu. S'il n'est pas installé, l'unité ne peut pas être trouvée, et le nom peut varier en fonction de la distribution. Avant de pratiquer, vérifiez le nom réel du service, et comme arrêter un serveur web en fonctionnement ou un service d'accès à distance peut déconnecter votre connexion, utilisez un environnement de test sûr. Vérifier le statut est souvent possible en tant qu'utilisateur régulier, mais modifier les services système nécessite généralement les privilèges administratifs.

Vérification du statut et du nom du service

Vérifiez séparément les services actuellement chargés et les fichiers d'unité de service installés. Les deux listes ont des critères différents, donc les résultats peuvent ne pas être les mêmes.

systemctl list-units --type=service --all
systemctl list-unit-files --type=service

Le premier montre les services chargés dans systemd, y compris les unités inactives. Le deuxième montre les fichiers d'unités de service installés et leur statut activé, ce qui est également utile pour trouver les services qui n'ont pas encore été chargés. Si la liste est longue et que le pager s'ouvre, appuyez sur q pour quitter.

Par exemple, pour vérifier le statut et les journaux récents du service Apache, entrez ce qui suit.

systemctl status apache2.service
systemctl is-active apache2.service
systemctl is-enabled apache2.service

Dans la sortie status, Active: active (running) signifie que le service est actuellement en cours d'exécution, inactive signifie inactif, et failed signifie échoué. Les états détaillés varient selon le type de service. is-active vérifie le statut actuel, et is-enabled vérifie le statut d'activation. Les unités static ne peuvent pas être activées de la manière habituelle mais peuvent être démarrées par d'autres unités.

Démarrer, arrêter, redémarrer le service

Les commandes suivantes modifient réellement l'état du service. Remplacez le nom de service exemple par celui qui convient à votre système et assurez-vous qu'arrêter le service est acceptable avant d'exécuter.

sudo systemctl start apache2.service
sudo systemctl stop apache2.service
sudo systemctl restart apache2.service

start démarre le service, et stop l'arrête. restart arrête le service puis le redémarre, et il peut démarrer un service arrêté. Exécutez uniquement la commande nécessaire. Après chaque opération, vérifiez le résultat avec systemctl status apache2.service. Même pour les services déjà en cours d'exécution, les connexions peuvent être temporairement interrompues pendant un redémarrage.

Si le service prend en charge le rechargement de ses propres paramètres, vous pouvez réappliquer les paramètres avec sudo systemctl reload apache2.service. Le support et la méthode d'application varient selon le service. Recharger et redémarrer ne sont pas la même action, et la façon de vérifier les paramètres doit suivre la documentation du service.

Activation au démarrage et état actuel en fonctionnement

Les commandes suivantes configurent ou suppriment la connexion afin que les unités démarrent lors du processus de démarrage, etc. L'exécution de enable seule ne démarre rien immédiatement, et l'exécution de disable seule n'arrête pas immédiatement les services déjà en cours d'exécution.

sudo systemctl enable apache2.service
sudo systemctl disable apache2.service
systemctl is-enabled apache2.service

Sélectionnez et exécutez uniquement les commandes nécessaires, et vérifiez les résultats avec la dernière commande. enabled sert à l'activation, et disabled à la désactivation. Cependant, les services peuvent encore démarrer en raison de dépendances d'autres unités ou sockets/minuteurs, donc ne considérez pas la désactivation comme un blocage de tous les chemins de démarrage.

Pour activer et démarrer immédiatement, utilisez sudo systemctl enable --now apache2.service ; pour désactiver et arrêter immédiatement, utilisez sudo systemctl disable --now apache2.service. Vérifiez les effets de chaque commande et pratiquez uniquement dans un environnement de test.

Que vérifier lorsque des problèmes surviennent

Vérifiez la liste des unités ayant échoué ainsi que les journaux récents de services spécifiques. Les journaux peuvent contenir des informations sensibles, donc examinez le contenu avant de le partager.

systemctl --failed
sudo journalctl -u apache2.service -n 50 --no-pager

Si le service ne peut pas être trouvé, vérifiez son nom et s'il est installé. Si le démarrage échoue, vérifiez status et les journaux pour des erreurs de configuration, des services dépendants, des conflits de ports ou des problèmes de permissions. Le statut masked indique que le démarrage est bloqué, donc ne supprimez pas le masquage sans avoir identifié la cause. Les messages et solutions peuvent varier selon la distribution et les paramètres du service.

Si vous avez modifié le fichier d'unité

Si vous avez modifié le fichier d'unité systemd ou la configuration drop-in, utilisez la commande suivante pour que systemd relise les définitions d'unité.

sudo systemctl daemon-reload

Cette commande ne redémarre pas le service lui-même et ne force pas le service à recharger ses fichiers de configuration. Si vous devez appliquer les modifications à un service en cours d'exécution, un redémarrage ou un rechargement séparé adapté au service et aux modifications peut être nécessaire. Sauvegardez la configuration avant de faire des modifications et assurez-vous de savoir comment revenir à l'état original.