====== Systemd ====== * Objet : Présentation des commandes systemd * Niveau requis : {{tag>débutant avisé}} * Commentaires : // Ce tuto vise à être un aide mémoire aux commandes systemd. // * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) * Suivi : {{tag>doublon}} * Création par [[user>deuchdeb]] le 05/07/2015 * Testé par [[user>deuchdeb]] le 05/07/2015 * Actualisé/compléter par [[user>smolski]] avec l'aide du forum le 21/08/2018 * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=128216#p128216 | Lien vers le forum concernant ce tuto]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) ===== Introduction ===== **Systemd** est une alternative au démon **init** de **System V** spécifiquement conçu pour le noyau **Linux**. Il a pour but : * d'offrir un meilleur cadre pour la gestion des dépendances entre services, * de permettre le chargement en parallèle des services au démarrage, * et de réduire les appels aux scripts shell. Le projet a été lancé par **Lennart Poettering** en 2010 et publié sous licence **GNU LGPL version 2.11**.\\ Le nom de ce programme vient de « **system daemon** » : le daemon du système. C'est devenu le système d'init par défaut de Debian depuis la version Jessie (Debian 8). ===== Installation ===== Déjà installé par défaut. //Et on dit que le libre c'est compliqué dit donc !// ^_^ ===== Utilisation ===== Un lien absolument nécessaire à consulter : * [[https://access.redhat.com/documentation/fr-fr/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files#sect-Managing_Services_with_systemd-Unit_File_Structure | Créer et modifier des fichiers d'unité systemd]]. //Merci// **Severian** ;-) **Post** sur le forum df : * [[https://debian-facile.org/viewtopic.php?pid=274804#p274804]] ===== Les journaux système ===== **Remarque importante !** Seuls l’utilisateur « root » ou le groupe « systemd-journal » peuvent consulter le journal. ==== Visualiser tout le journal ==== journalctl ==== Visualiser le journal relatif à un service particulier (exemple cups) ==== journalctl -u cups ==== Visualiser le journal relatif à un processus particulier ==== journalctl _PID=1 ==== Visualiser le journal relatif à un exécutable particulier (exemple dhcpd) ==== journalctl /usr/sbin/dhcpcd ==== Visualiser le journal du jour ==== journalctl --since="today" ==== Visualiser le journal sur une période ==== journalctl --since="AAAA-MM-JJ hh:mm:ss" --until="AAAA-MM-JJ hh:mm:ss" ==== Visualiser le journal relatif au dernier boot (-b) avec les messages explicatifs (-x) ==== journalctl -xb ==== Visualiser les erreurs dans le journal (-p err) en commençant par la plus récente (-r) ==== journalctl -r -p err ==== Scripts auto==== On peut activer automatiquement des scripts root au démarrage. === Exemple === Pour activer par exemple le script ''/opt/monscript.sh'' au démarrage de debian. - Créer le fichier ''monscript.service'' avec le code suivant :cat >/etc/systemd/system/monscript.service <À noter le démarrage du réseau pour l'utilisation de l'application [[doc:reseau:network-manager|Network Manager]] : ''after=NetworkManager.service''. \\ Si vous n'utilisez pas l'application network-manager, Freemaster signale sur le forum cet argument à mettre à la place : \\ ''After=network.target'' - Créer le fichier ''/opt/monscript.sh'' ainsi :cat > /opt/monscript.sh < exit 0 EOF - Ajouter [[doc:systeme:chmod|l'autorisation d’exécution]] au script ''/opt/monscript.sh'' :chmod +x /opt/monscript.sh - Et activer le service : systemctl enable monscript //Merci à //Freemaster //et //vv222// sur le forum là// : * https://debian-facile.org/viewtopic.php?pid=274785#p274785 //Que leurs pas soient à jamais parfumés de pétales de roses...// ===== Les unités ===== **Systemd** gère des services système mais également des périphériques, des points de montage, des timers, et d'autres composants du système. Le terme générique pour tous ces objets dans **systemd** est une unité (**Unit**). \\ La section **[Unit]** stocke l'information qui s'applique non seulement aux services mais également à tous les autres types d'unité **systemd**. ==== Convention de nommage ==== Chaque unité utilise un nom d'extension en rapport avec son type : service : *.service groupe d’unités : *.target montage : *.mount socket : *.socket ===== Utilisation des unités ===== ==== Lister les unités ==== systemctl list-units ==== Statut d’une unité ==== systemctl status kdm.service ==== Activer une unité (ici le gestionnaire graphique kdm) ==== systemctl enable kdm.service ==== Désactiver une unité (ici le gestionnaire graphique kdm) ==== systemctl disable kdm.service ==== Démarrer une unité (ici le gestionnaire graphique kdm) ==== systemctl start kdm.service ==== Arrêter une unité (ici le gestionnaire graphique kdm) ==== systemctl stop kdm.service ==== Regarder si il y a des unités qui posent problème ==== systemctl status ===== Gestion au niveau utilisateur ===== Pour gérer les services au niveau utilisateur, il faut ajouter l’option « %%--%%user ». \\ Par exemple désactiver le service « dropbox » ainsi : systemctl --user disable dropbox ===== Les cibles (targets) : la méthode systemd pour les niveaux d'exécutions ===== Il est possible de regrouper plusieurs unités dans une unité spéciale dont le nom d'extension est //target// (//cible//).\\ Cela permet de reproduire le fonctionnement des //niveaux d’exécution// (//runlevels// de //SysVinit//). Pour lister toutes les cibles((actives ou non)) : systemctl list-units --type=target -all Voici un tableau de correspondance avec l'ancien système : FIXME : tableau à contrôler : | Niveau d'exécution | Cible systemd | Notes | | 0 | poweroff.target | Arrêt de l'ordinateur | | 1 | rescue.target | Mode mono-utilisateur | | 2, 3, 4 | multi-user.target | Mode multi-utilisateur en mode texte | | 5 | graphical.target | Mode multi-utilisateur en mode graphique | | 6 | reboot.target | Redémarrage de l'ordinateur | | emergency | emergency.target | Mode de secours | Par défaut, lorsque un gestionnaire de connexion est installé, la cible par défaut est ''graphical.target''. Pour changer la cible par défaut au démarrage : * Avec ''systemctl'' :systemctl set-default multi-user.target * Ou bien, lors de l'amorçage de l'ordinateur, en ajoutant directement à la fin de la ligne ''boot:'' :systemd.unit=multi-user.target ===== Diagnostic système ===== ==== Liens entre les services créés par systemd et les processus ==== systemd-cgls Cela va créer une arborescence qui permettra de faire le lien entre les services et les processus. ===== les performances de démarrage ===== quelques outils intégré à systemd pour analyser le démarrage du système temps simple du démarrage du système : systemd-analyze Startup finished in 1.456s (kernel) + 6.752s (userspace) = 8.208s temps détaillé de démarrage du système : systemd-analyze blame 1min 4.746s nmaj.service 5.427s exim4.service 386ms media-Divertissement.mount 177ms ModemManager.service 162ms keyboard-setup.service 115ms media-docs.mount 115ms accounts-daemon.service 97ms ufw.service 92ms rsyslog.service 85ms systemd-logind.service 84ms systemd-fsck@dev-disk-by\x2duuid-8a01a86d\x2d67be\x2d46d7\x2d821f\x2def50f7 84ms lm-sensors.service 82ms alsa-restore.service 81ms console-setup.service 78ms irqbalance.service 73ms systemd-fsck@dev-disk-by\x2duuid-BC47\x2d8202.service 72ms media-divers.mount 54ms networking.service 51ms systemd-resolved.service 44ms lightdm.service 43ms systemd-tmpfiles-setup-dev.service 38ms systemd-networkd.service 37ms kbd.service 32ms systemd-tmpfiles-clean.service 31ms user@1000.service 30ms systemd-fsck@dev-disk-by\x2duuid-bc2b1652\x2d35c6\x2d4688\x2db7d2\x2d11de53 27ms tmp.mount 26ms resolvconf.service 23ms polkitd.service 22ms systemd-setup-dgram-qlen.service 21ms udisks2.service 20ms systemd-backlight@backlight:acpi_video0.service 19ms systemd-udev-trigger.service 19ms home.mount 19ms dev-mqueue.mount 18ms systemd-random-seed.service 17ms sys-kernel-debug.mount 16ms user@110.service 16ms rdnssd.service 15ms hddtemp.service 14ms dev-hugepages.mount 14ms var.mount 13ms hdparm.service 13ms systemd-modules-load.service 13ms keymap.service 12ms systemd-user-sessions.service 11ms dev-disk-by\x2duuid-c67a739b\x2d917c\x2d4b33\x2dbf0d\x2dd72a0321d356.swap 10ms boot-efi.mount 10ms gdomap.service 9ms rc-local.service 9ms systemd-journal-flush.service 8ms systemd-remount-fs.service 8ms kmod-static-nodes.service 8ms dev-sda5.swap 7ms systemd-update-utmp.service 6ms systemd-sysctl.service 5ms systemd-tmpfiles-setup.service 4ms systemd-update-utmp-runlevel.service 4ms systemd-udevd.service 3ms rtkit-daemon.service 2ms sys-fs-fuse-connections.mount 1ms udev-finish.service systemd-analyze plot > plot.svg {{/file-Rfbbe098627bcfb2d1c1856cb27362f78.png?600}} ===== Systemd en mode graphique ===== paquet : **systemd-ui** https://packages.debian.org/jessie/systemd-ui ==== Installation ==== apt-get install systemd-ui Ce tuto vient très largement de **Yopland** ici: http://www.planet-libre.org/?post_id=18293 ===== Sources d'informations sur systemd ===== * http://linuxfr.org/news/systemd-pour-les-administrateurs-partie-1-et-2 * http://linuxfr.org/news/systemd-pour-les-administrateurs-parties-3-4-et-5 * http://www.funix.org/fr/linux/startup.htm