====== systemd ======
===== Généralités =====
* [[http://fr.wikipedia.org/wiki/Systemd|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 =====
* [[http://linuxfr.org/news/%C3%A9volutions-techniques-de-systemd|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
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
systemctl stop
systemctl restart
systemctl reload
Voir son statut.
systemctl status
systemctl status sshd
systemctl is-active
Activer, désactiver un service au démarrage (la commande chkconfig sera amenée à disparaître dans le futur).
systemctl enable
systemctl disable
systemctl is-enabled
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