systemd et journald
Ce TD est à réaliser dans une machine virtuelle Fedora. Avec les machines vagrant :
$ vagrant up systemd
$ vagrant ssh systemd
Objectifs
- Découvrir systemd et journald
systemd et journald
Etat des services
Listez l’état des services sur la machine :
$ systemctl
$ systemctl status
Inspectez l’état précis de quelques services :
$ systemctl status <service>
Tuez un service au hasard avec la commande kill
et constater les changements de status. Il est possible de filtrer les résultats en n’affichant que les services disponibles (ou lancés ou en échec) :
$ systemctl --state=running
$ systemctl --state=active
$ systemctl --state=exited
$ systemctl --state=failed
Désactivez et arrêtez tous les services que vous pensez non nécessaire au fonctionnement du système :
$ systemctl disable <service>
$ systemctl stop <service>
Démarrage du système
Vérifiez que la « target » par défaut est bien multi-user.target
:
$ systemctl get-default
$ systemctl set-default multi-user.target
Etudiez la procédure de démarrage du système avec :
$ systemd-analyze plot > bootchart.svg
Le fichier bootchart.svg
peut être affiché dans un navigateur. Pour le copier de la machine vagrant sur votre système, vous pouvez utiliser:
# Récupérer la configuration SSH pour la machine vagrant correspondante
$ vagrant ssh-config systemd > systemd.ssh_config
$ scp -F systemd.ssh_config systemd:path/to/file bootchart.svg
- Question 1 : Dans quel ordre démarrent les services ?
- Question 2 : Trouvez quatre services avec des dépendances et retrouvez cette information dans leur fichier d’unit.
Modifier certains paramètres pour un service précis
Modifiez quelques services sans modifier directement leur unit en utilisant :
$ systemctl edit <service>
Vous pouvez par exemple rajouter des variables d’environment à l’unit:
[Service]
Environment=Foo=Bar
Constatez les changements dans le dossier :
/etc/systemd/system/<service>.service.d/*..conf
Indiquez à systemd de recharger la configuration, redémarrer le service et vérifier que la modification a bien été appliquée :
$ systemctl daemon-reload
$ systemctl restart <service>(.service)
$ systemctl show service
$ systemctl status service
$ cat /proc/<PID>/environ
Question 3 : Indiquez qu’un service devra être relancé en cas d’interruption imprévue (chercher l’option Restart
dans systemd.service(5)
). Testez que cela fonctionne correctement.
Modifiez quelques services en copiant leur fichier d’unit par défaut dans le dossier :
$ cp /usr/lib/systemd/system/<unit>.service /etc/systemd/system/
Les modifications peuvent alors être effectuées directement dans l’unit. Attention, les modification dans le dossier *.service.d/*.conf
sont toujours prises en compte. Pour afficher l’ensemble des configurations prises en compte pour un service par systemd :
$ systemctl cat <service>
Naviguer dans le journal
Essayez et expliquez les commandes suivantes :
$ journalctl -e
$ journalctl -b -1
$ journalctl -b -0 _PID=333
$ journalctl -k
$ journalctl -u httpd
$ journalctl -f -n 50
$ journalctl /usr/bin/dbus-broker
Question 4 : Comment peut on afficher tous les logs qui ont été émis par le service Apache (httpd
) entre 10h30 et 11h00 ce matin ?