systemd

Généralités

systemd.

Avec systemd, fini les jolis rectangles avec marqué [OK] ou [Echec] au démarrage.

Alors concrètement qu'est-ce qui change ? Et bien SystemD offre surtout de nouveaux horizons en terme de parallélisation de scripts de démarrage, et déclenche le démarrage des services en fonction d'un événement, plutôt que sur du séquentiel. Bien entendu, SystemD est compatible avec les scripts LSB et SysV (= scripts qui commencent par /etc/init.d/xxx).

Documentation

Evolutions technique de systemd sur Linux FR.

Configuration

Pour gérer tout ça, l'utilisateur dispose d'un outil en ligne de commande appelé systemctl, dont voici quelques exemples d'utilisation.

Emplacements des fichiers d'units systemd

Fichiers par défaut des units : /usr/lib/systemd/system

/usr/lib/systemd/system/multi-user.target

Directive After pour gérer la dépendance des targets

Fichiers qui surcharge les units par défaut: /etc/systemd/system. systemctl enable créé des liens symboliques (wants) dans chaque dossier de targets pour les services à activer concernés. Lien de /etc… vers /usr/lib…

Runtime configuration générées automatiquement : /run/systemd/system

Une unit regroupe tout ce qui peut être géré (un service mais pas que, un socket, un montage…)

Une target est une collection d'unit, elle remplace les runlevel (multi-user correspond au CLI runlevel 3 et graphical au mode graphique runlevel 5)

Un want dans systemd définit quelle unit systemd wants quand il lance une target (lien symbolique qui permet l'activation ou la désactivation au démarrage)

Liste des types d'units gérables.

systemd -t help

Lister les services gérables par systemd.

systemctl list-units

Liste de toutes les options pour une unit.

systemctl show sshd

Afficher les services actifs uniquement

systemctl --type=service

Afficher les services actifs uniquement (idem sans l'option list-units)

systemctl list-units --type=service

Affiche aussi les services inactifs

systemctl list-units --type=service --all

Liste des services actifs dans un affichage moins verbeux que list-units

systemctl list-unit-files --type=service

Afficher les services en failed

systemctl --failed --type=service

Mode verbeux du status

systemctl status -l <nom-service>

Voir toutes les dependances d'units

systemctl list-dependencies

Sur un service spécifique

systemctl list-dependencies vsftpd

Les units qui sont dépendantes de ce service

systemctl list-dependencies vsftpd --reverse

Rendre impossible le lancement d'un service en conflit avec un autre; Exemple avec firewalld et iptables.

systemctl mask iptables

Target actives

systemctl --type=target

Targets actives et inactives

systemctl --type=target --all

Dossier avec les liens associés aux targets

/etc/systemd/system/multi-user.target.wants

Changer de target (anciennement runlevel)

systemctl isolate rescue.target
systemctl isolate reboot.target

Target par défaut

systemctl get-default
systemctl set-default graphical.target

Variables du shell courant

systemctl show-environment

Lister l'ensemble des programmes chargés par systemd.

systemd-analyse

Démarrer, arrêter, redémarrer ou recharger un service.

systemctl start <service>
systemctl stop <service>
systemctl restart <service>
systemctl reload <service>

Voir son statut.

systemctl status <service>
systemctl status sshd
systemctl is-active <service>

Activer, désactiver un service au démarrage (la commande chkconfig sera amenée à disparaître dans le futur).

systemctl enable <service>
systemctl disable <service>
systemctl is-enabled <service>

Interface graphique pour gérer les services au lieu de la ligne de commande.

yum install systemd-gtk

L'outil se nomme systemadm.

Optimisation

Temps de démarrage du système.

systemd-analyze time

Temps de démarrage par service.

systemd-analyze blame

Temps de démarrage par service avec génération d'un graphique des temps de démarrage de chaque service.

systemd-analyze plot > plot.svg
eog plot.svg