Gérer le système et les services avec "systemd"

"Systemd" est un gestionnaire de système et de services pour Linux. Il est le système d'init par défaut dans Debian depuis Jessie.

Dans cet article nous allons voir les bases de systemd ainsi que les commandes utiles pour gérer le système et les services.

Terminologie

Les tâches de "systemd" sont organisées en tant qu'unités.

Les unités les plus courantes sont les services (.services), les points de montage (.mount), les périphériques (.device), les sockets (.socket) ou les minuteurs (.timer). Par exemple, le démarrage du démon shell sécurisé est effectué par l'unité ssh.service.

Systemd place chaque service dans un groupe de contrôle (cgroup) dédié au service.

Les noyaux modernes prennent en charge l'isolation des processus et l'allocation des ressources en fonction des groupes de contrôle.

Les cibles (targets) sont des groupes d'unités. Les cibles appellent les unités pour assembler le système.

Par exemple, graphical.target appelle toutes les unités nécessaires pour démarrer un poste de travail avec une interface graphique. Les cibles peuvent se superposer ou dépendre d'autres cibles. Au démarrage, systemd active la cible default.target qui est un alias pour une autre cible telle que graphic.target.

Systemd crée et gère les sockets utilisés pour la communication entre les composants du système.

Par exemple, il crée d'abord le socket /dev/log puis démarre le démon "syslog". Cette approche présente deux avantages. Premièrement, les processus communiquant avec syslog via /dev/log peuvent être démarrés en parallèle. Deuxièmement, les services écrasés peuvent être redémarrés sans que les processus qui communiquent via les sockets avec eux perdent leur connexion. Le noyau mettra la communication en mémoire tampon pendant que le processus redémarre.

L'outil "systemctl"

"systemctl" est l'outil principal utilisé pour inspecter et contrôler l'état du système et du gestionnaire de service.

systemctl permet, par exemple, d'activer/désactiver les services de manière permanente ou uniquement pour la session en cours.

Gestion du système

Afficher le statut du système :

systemctl status

Lister les unités échouées :

systemctl --failed

Lister les fichiers unités installés :

systemctl list-unit-files

Lister les unités par type (par exemple les services) :

systemctl list-units --type=service

Gestion des services

Lister les services en cours d'exécution :

systemctl

Lister tous les services (y compris ceux qui sont désactivés) :

systemctl --all

Voir le statut du service "sshd" :

systemctl status sshd.service

Démarrer le service "sshd" :

systemctl start sshd.service

Arrêter le service "sshd" :

systemctl stop sshd.service

Redémarrer le service "sshd" :

systemctl restart sshd.service

Recharger le service "sshd" :

systemctl reload sshd.service

Les services au démarrage du système

Activer le service "apache2" au démarrage

systemctl enable apache2.service

Désactiver le service "apache2" au démarrage

systemctl disable apache2.service

Informations rapides

Savoir si un service est actif (en cours d'exécution)

systemctl is-active apache2.service

Savoir si un service est activé au démarrage

systemctl is-enabled apache2.service
Sources :
Cet article s'appuie largement sur le Wiki Debian
et dans une moindre mesure sur celui d'Adrien.D

Vous retrouverez toutes ces informations et plus encore dans la page de manuel dédiée.

Haut de page