Ceci est une ancienne révision du document !
Systemd
Systemd est le gestionnaire de système qui remplace upstart et son prédécesseur (les scripts system V) depuis Ubuntu 16.04 LTS Xenial. Le nom de ce programme vient de « system daemon » : le daemon du système
Est-ce vraiment à partir de Ubuntu 16.04 ? Ou est-ce antérieur ?
C'est une pièce maîtresse de l'architecture GNU/Linux. En effet, c'est le premier programme lancé par le noyau (il a donc le PID N°1) et il se charge de lancer tous les programmes suivants en ordre jusqu'à obtenir un système opérationnel pour l'utilisateur, selon le mode déterminé (single user, multi-user, graphique). C'est également à lui qu'incombe la tache de redémarrer ou arrêter votre ordinateur proprement.
Il a été développé dans l'optique de mieux gérer les dépendances entre les différents services lancés au démarrage et optimiser celui-ci en parallélisant mieux les tâches. Son rôle est plus étendu que Upstart, il gère également le montage des différents systèmes de fichier et introduit un nouveau système de log appelé "The Journal".
Il introduit la notion d'unité. Une unité représente un fichier de configuration. Entre autres, une unité peut être un service (*.service), un target (*.target), un montage (*.mount), un socket (*.socket)…
C'est donc un sujet très vaste et nous allons donc nous concentrer dans ce wiki sur un des aspects les plus important de système, la gestion des services
Gestion basique des services
Un service ou daemon est un programme qui tourne en arrière plan et s'active sous certaine condition. Par exemple, le service hddtemp surveille la température de vos disques dur et declanche une alerte si elle dépasse un certain seuil.
L'outil de gestion des services (et des autres unités d'ailleurs) dans systemd s'appelle systemctl.
Il est généralement utilisé dans un terminal:
systemctl ACTION <Nom_du_service>.service
Où
- ACTION sera la commande que l'on souhaite appliquer à la dite unité:
- start : démarrer le service
- stop : arrêter le service
- restart : relancer le service
- reload : recharger le service
- status : connaitre l'état du service
- <Nom_du_service> est le nom du service visé.
Quelle que soit l'action menée sur un service, au prochain démarrage de la machine celui-ci devrait retrouver le status qui lui a été défini par défaut.
Exemples
systemctl status ssh.service
donnera l'état du service ssh, son PID et les dernières lignes de son fichier de log.
systemctl stop ufw.service
arrêtera le service ufw, Uncomplicated Firewall,
systemctl restart lightdm.service
relancera le serveur graphique.
Par exemple sudo restart lightdm est équivalent à systelctl restart lightdm.service.
Lister les services démarrés
Pour obtenir la liste triée des services accompagnés de leur état, saisissez dans un terminal :
systemctl list-unit-files | grep service | sort
Vous pouvez également obtenir la liste des services lancés au démarrage, triés selon leur temps d’exécution :
systemd-analyze blame
Cela peut-être pratique pour trouver le service qui ralenti votre démarrage.
Modifier l'exécution d'un service
Comme Upstart, systemd utilise des fichiers de configuration correspondant aux différents services à manipuler.
Ces fichiers de configuration se trouvent dans /etc/systemd/system/ et permettent d'indiquer les conditions d'activation ou désactivation d'un service, leur propriétaire, etc.
Dans un terminal saisissez:
sudo cp -r /etc/systemd/system /etc/systemd/system.save$(date +%Y%m%d)
Pour desactiver un service, il faut taper :
systemctl disable <Nom_du_service>.service
Ainsi, au prochain redemarrage du système, le service correspondant ne sera plus lancé.
Pour activer un service ou relire sont fichier de configuration, il faut taper:
systemctl enable <Nom_du_service>.service
Néanmoins si vous souhaitez modifier l'état d'un service selon certaines conditions, vous devrez modifier le fichier /etc/systemd/system/<nom_du_service>.service.
Exemples
Si vous souhaitez désactiver la synchronisation des fichiers syncthing de l'utilisateur toto, dans un terminal saisissez:
systemctl disable syncthing@toto.service
Pour réactiver le service, il faudra faire la manipulation inverse:
systemctl enable syncthing@toto.service
Les targets
Personnaliser un fichier de configuration Systemd
Les journaux
Logiciels graphique
Il existe un utilitaire graphique qui se nomme systemadm pour gérer systemd. Pour l'installer, tapez dans un terminal:
sudo apt-get install systemd-ui
Il existe également un logiciel graphique nommé Gnome-logs pour lire les fichiers de log generés par systemd. Pour l'installer, tapez dans un terminal:
sudo apt-get install gnome-logs