Systemctl est un utilitaire utilisé par systemd pour gérer le système et le gestionnaire de services. De nombreuses distributions Linux modernes telles que Ubuntu, Debian, Fedora, Linux Mint, OpenSuSE, Redhat ont adopté systemd comme système d'initialisation par défaut.
À l'aide de systemctl, vous pouvez démarrer, arrêter, recharger, redémarrer le service, répertorier les unités, vérifier l'état du service, activer/désactiver le service, gérer les cibles (niveaux d'exécution) et la gestion de l'alimentation.
Dans ce tutoriel, je vais vous montrer comment utiliser les commandes systemctl pour gérer le service systemd sous Linux.
1. Systemctl Démarrer/Arrêter/Redémarrer/Recharger le Service
Pour démarrer un service sous Linux, exécutez systemctl suivi du nom du service d'espace 'start'.
Exemple :
systemctl start dnsmasq
Contrairement à la commande service, la commande systemctl start ne donne aucune sortie.
Pour arrêter un service, utilisez systemctl stop service-name. Par exemple :
systemctl stop dnsmasq
Pour redémarrer un service, utilisez systemctl restart service-name.
Exemple :
systemctl restart dnsmasq
Pour recharger la configuration du service (disons ssh), sans le redémarrer, utilisez systemctl reload service-name.
Par exemple :
systemctl reload sshd
2. Systemctl vérifie l'état du service
Afin de voir si un service est en cours d'exécution ou non, nous pouvons utiliser la vérification d'état systemctl.
systemctl status dnsmasq
3. Vérifier et activer/désactiver le service au démarrage
Pour activer un service au démarrage (cela correspond à 'chkconfig on' dans le système sysvinit), utilisez systemctl enable service-name.
Exemple :
systemctl enable dnsmasq.service
De même, les services peuvent être désactivés au démarrage, lancez :
systemctl disable dnsmasq.service
Afin de vérifier si un service est activé au démarrage ou non, exécutez :
systemctl is-enabled dnsmasq.service
4. Unités de liste Systemctl
Pour répertorier toutes les unités en cours d'exécution, exécutez la commande systemctl sans aucune option. L'option list-units fait également la même chose.
systemctl
ou
systemctl list-units
Les unités défaillantes peuvent être listées avec l'option --failed.
systemctl --failed
Pour lister tous les services actifs, lancez :
systemctl list-units -t service
6. Commandes de redémarrage/arrêt de Systemctl
Comme la commande shutdown, la commande systemctl pour arrêter le système, le redémarrer ou le mettre en veille prolongée.
La commande suivante éteindra le système et éteindra la machine et enverra une notification à tous les utilisateurs connectés.
systemctl poweroff
La commande suivante éteindra le système mais n'éteindra pas la machine. Cela enverra une notification à tous les utilisateurs connectés.
systemctl halt
Éteignez la machine mais n'enverrez aucune notification à tous les utilisateurs connectés.
systemctl --no-wall poweroff
Pour afficher les détails de l'arrêt, exécutez la commande ci-dessous.
journalctl -u systemd-shutdownd
7. Systemclt pour gérer les systèmes distants
En règle générale, toutes les commandes systemctl ci-dessus peuvent être utilisées pour gérer un hôte distant avec la commande systemctl elle-même. Cela utilisera ssh pour la communication avec l'hôte distant. Tout ce que vous avez à faire est d'ajouter l'utilisateur et l'hôte à la commande systemctl comme ceci :
systemctl status sshd -H [email protected]
8. Gestion des cibles
Systemd a un concept de cibles ayant un objectif similaire aux niveaux d'exécution dans le système sysVinit.
Les niveaux d'exécution dans sysVinit étaient principalement numériques (0,1,2,...). Voici les niveaux d'exécution dans sysVinit avec leurs homologues systemd :
0 runlevel0.target, poweroff.target
1, s, single runlevel1.target, rescue.target
2, 4 runlevel2.target, runlevel4.target, multi-user.target
3 runlevel3.target, multi-user.target
5 runlevel5.target, graphical.target
6 runlevel6.target, reboot.target
emergency emergency.target
Pour modifier la cible actuelle, saisissez :
systemctl isolate graphical.target
Si vous voulez voir dans quelle cible vous vous trouvez, vous devez lister toutes les unités correspondantes.
systemctl list-units --type=target
Vous pouvez voir "graphical.target" répertorié ici. C'est ce que nous avons changé notre cible. Maintenant, changeons à nouveau le niveau d'exécution en multi-user.target, puis analysons cette sortie :
systemctl isolate multi-user.target
systemctl list-units --type=target
Pour répertorier la cible par défaut, saisissez :
systemctl get-default
La cible par défaut peut être définie avec la commande set-default, tapez :
systemctl set-default graphical.target
Autre commande systemd utile
Se connecter à systemd
Le systemd a son propre système de journalisation appelé journald. Il remplace le démon syslog de sysVinit.
journalctl
Pour voir tous les messages de démarrage, exécutez la commande "journalctl -b".
journalctl -b
La commande suivante suit les journaux système en temps réel (similaire à tail -f).
journalctl -f
Pour vérifier les journaux spécifiques à un service ou à un exécutable particulier, utilisez journalctl comme :
journalctl /usr/sbin/dnsmasq
Trouver la durée du processus de démarrage
Pour trouver la durée du processus de démarrage systemd avec la commande suivante :
systemd-analyze
L'heure systemd-analyze affiche également les mêmes informations.
systemd-analyze time
Pour imprimer une liste de toutes les unités en cours d'exécution classées par temps d'initialisation, utilisez systemd-analyze blame.
systemd-analyze blame
Commande Hostnamectl
Pour afficher et modifier le nom d'hôte, utilisez la commande hostnamectl.
hostnamectl
Conclusion
Dans ce didacticiel, nous avons appris les commandes systemctl pour gérer le service systemd dans les distributions Linux. J'espère que vous avez apprécié la lecture et s'il vous plaît laissez vos suggestions dans la section des commentaires ci-dessous.
Lire aussi :
- Processus de démarrage Systemd – Examen détaillé sous Linux
- Coloré ! systemd vs sysVinit Linux Cheatsheet