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.