From 6512a66830965b99168cff612583004626beaa61 Mon Sep 17 00:00:00 2001 From: glevy Date: Thu, 24 Jul 2025 09:49:06 +0200 Subject: [PATCH] =?UTF-8?q?D=C3=A9tails=20des=20commandes=20+=20linting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- outils/logiciels/systemd.md | 102 ++++++++++++++++++++++++++++++------ 1 file changed, 87 insertions(+), 15 deletions(-) diff --git a/outils/logiciels/systemd.md b/outils/logiciels/systemd.md index e2e303b..078b6b3 100644 --- a/outils/logiciels/systemd.md +++ b/outils/logiciels/systemd.md @@ -1,10 +1,67 @@ # Systemd -Systemd est une suite logicielle pour systèmes GNU/Linux. Elle a pour but de standardiser et d'améliorer la gestion du démarrage, des services, des journaux, du réseau, de la virtualisation et plus encore. Ce document introduit certaines fonctionnalités essentielles de Systemd. +Systemd est une suite logicielle pour systèmes GNU/Linux. +Elle a pour but de standardiser et d'améliorer la gestion +du démarrage, des services, des journaux, du réseau, +de la virtualisation et plus encore. +Ce document introduit certaines fonctionnalités +essentielles de Systemd. ## Unites de configuration : un format unificateur -Systemd gère différents composants du système à travers des "unités". Chaque unité est un fichier de configuration situé dans `/etc/systemd/system/` ou `/lib/systemd/system/`, avec l'extension `.service`, `.timer`, `.mount`, etc. +Systemd gère différents composants du système à travers des "unités". +Chaque unité est un fichier de configuration situé dans +`/etc/systemd/system/` ou `/lib/systemd/system/`, +avec l'extension `.service`, `.timer`, `.mount`, etc. + +### Paramètres courants des unités systemd + +Ci-dessous, on détaille quelques unes des lignes les plus fréquemment +rencontrées dans des fichiers de type `.service`. + +`[Unit]` + +`Description=` : Champ texte décrivant l’unité. S’affiche dans les logs et avec systemctl status. + +`After=` : Spécifie l’ordre de démarrage. +L’unité sera lancée après celle(s) mentionnée(s), +mais cela ne garantit pas que les dépendances seront satisfaites. + +`Requires=` : L’unité dépend strictement de celle mentionnée. +Si la dépendance échoue à démarrer, celle-ci échoue aussi. + +`Wants=` : Similaire à `Requires=`, mais plus souple : +si la dépendance échoue, cela n'empêche pas le démarrage. + +`[Service]` + +`ExecStart=` : La commande à exécuter pour démarrer le service. +Obligatoire. + +`ExecStop=` : (Optionnel) +Commande à exécuter lors de l'arrêt du service. + +`Restart=` : Définit la politique de redémarrage +(`on-failure`, `always`, etc.). + +`RestartSec=` : Temps à attendre avant de relancer +le service après un échec. + +`User=` : Définit sous quel utilisateur exécuter le service. + +`WorkingDirectory=` : Répertoire de travail du processus. + +`Environment=` : Définition de variables d’environnement. + +`[Install]` + +`WantedBy=` : Indique quand ce service doit être activé automatiquement. +Typiquement `multi-user.target` pour les services système. + +`RequiredBy=` : Comme `WantedBy=`, mais avec une dépendance forte. + +Dans la suite de ce document, on illustre l'utilisation de ces paramètres +par des exemples. ### Services @@ -35,7 +92,8 @@ sudo journalctl -u nom_du_service # Voir les logs ### Minuteurs (timers) -Les timers remplacent `cron` pour la planification de tâches. Ils utilisent une unité `.timer` couplée à un `.service`. +Les timers remplacent `cron` pour la planification de tâches. +Ils utilisent une unité `.timer` couplée à un `.service`. #### Exemple : lancer `backup.service` tous les jours à minuit @@ -58,7 +116,8 @@ sudo systemctl start backup.timer ### (Auto)mount -Systemd gère aussi les points de montage statiques ou dynamiques avec les unités `.mount` et `.automount`. +Systemd gère aussi les points de montage statiques ou +dynamiques avec les unités `.mount` et `.automount`. #### Exemple : monter un disque automatiquement @@ -85,7 +144,9 @@ sudo systemctl enable --now data.mount ## Configuration réseau -Systemd intègre une configuration réseau via `systemd-networkd` et `systemd-resolved`. Ces composants permettent une configuration déclarative et centralisée. +Systemd intègre une configuration réseau via `systemd-networkd` +et `systemd-resolved`. +Ces composants permettent une configuration déclarative et centralisée. ### Obtenir des adresses IPs @@ -131,7 +192,8 @@ journalctl --since "2 hours ago" ### Espaces de noms (namespaces) -Les journaux peuvent être isolés par service, utilisateur ou conteneur. Pour un utilisateur : +Les journaux peuvent être isolés par service, utilisateur ou conteneur. +Pour un utilisateur : ```bash journalctl --user @@ -139,7 +201,8 @@ journalctl --user ### Partage de journaux entre machines -Via `systemd-journal-remote`, il est possible de centraliser les journaux sur une autre machine. +Via `systemd-journal-remote`, il est possible de centraliser les +journaux sur une autre machine. Installation : @@ -157,7 +220,9 @@ sudo systemctl enable --now systemd-journal-remote ### Chiffrement de disque -Systemd supporte `systemd-cryptsetup` pour gérer les volumes chiffrés au démarrage. Intégration possible avec `crypttab`. +Systemd supporte `systemd-cryptsetup` pour gérer les +volumes chiffrés au démarrage. +Intégration possible avec `crypttab`. ```bash echo 'cryptdata UUID=xxx none luks' | sudo tee -a /etc/crypttab @@ -167,7 +232,8 @@ Ajouter ensuite une unité `.mount` pour `/mnt/data` comme vu plus haut. ### Chargeur d'amorçage (bootloader) -Systemd intègre un bootloader : `systemd-boot`, simple et rapide, surtout utile avec EFI. +Systemd intègre un bootloader `systemd-boot`, +simple et rapide, surtout utile avec EFI. Pour l'installer, lancer la commande (sur les systèmes EFI uniquement) : @@ -188,7 +254,8 @@ où `$arch` pointe vers le fichier `boot/loader/entries/$arch.conf` ### Conteneurisation -`systemd-nspawn` permet de lancer des conteneurs légers, similaires à `chroot` ou `Docker`. +`systemd-nspawn` permet de lancer des conteneurs légers, +similaires à `chroot` ou `Docker`. ```bash sudo debootstrap stable /var/lib/machines/deb @@ -197,7 +264,8 @@ sudo systemd-nspawn -D /var/lib/machines/deb ### Virtualisation -Systemd peut être utilisé avec des outils comme `QEMU` ou `libvirt`, mais fournit aussi des commandes comme : +Systemd peut être utilisé avec des outils comme `QEMU` ou `libvirt`, +mais fournit aussi des commandes comme ```bash machinectl start nom_machine @@ -205,7 +273,9 @@ machinectl start nom_machine ## Gestion des secrets -Systemd 248+ permet de gérer des secrets via `LoadCredential=` et `SetCredential=` dans les unités, pour ne pas stocker de secrets en clair dans les fichiers `.service`. +Systemd 248+ permet de gérer des secrets via `LoadCredential=` +et `SetCredential=` dans les unités, +pour ne pas stocker de secrets en clair dans les fichiers `.service`. Exemple : @@ -219,7 +289,8 @@ Environment=API_TOKEN=%d/token ### Systèmes dynamiques : gestion des erreurs dans les services -Ajouter `Restart=on-failure` dans une unité `.service` permet de redémarrer automatiquement en cas de plantage. +Ajouter `Restart=on-failure` dans une unité `.service` +permet de redémarrer automatiquement en cas de plantage. ```ini [Service] @@ -229,10 +300,11 @@ RestartSec=5s ### Administration à distance -Systemd prend en charge `systemd-ssh` ou l'utilisation de `systemctl` à distance via `ssh` : +Systemd prend en charge `systemd-ssh` ou l'utilisation de +`systemctl` à distance via `ssh`. ```bash systemctl --host user@machine status nginx ``` -Cela fonctionne à condition d'avoir un accès SSH à la machine distante. \ No newline at end of file +Cela fonctionne à condition d'avoir un accès SSH à la machine distante.