Détails des commandes + linting

merge-requests/23/head
glevy 2025-07-24 09:49:06 +02:00
parent 7b17025ee0
commit 6512a66830
1 changed files with 87 additions and 15 deletions

View File

@ -1,10 +1,67 @@
# Systemd # 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 ## 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 lunité. Saffiche dans les logs et avec systemctl status.
`After=` : Spécifie lordre de démarrage.
Lunité sera lancée après celle(s) mentionnée(s),
mais cela ne garantit pas que les dépendances seront satisfaites.
`Requires=` : Lunité 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 denvironnement.
`[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 ### Services
@ -35,7 +92,8 @@ sudo journalctl -u nom_du_service # Voir les logs
### Minuteurs (timers) ### 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 #### Exemple : lancer `backup.service` tous les jours à minuit
@ -58,7 +116,8 @@ sudo systemctl start backup.timer
### (Auto)mount ### (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 #### Exemple : monter un disque automatiquement
@ -85,7 +144,9 @@ sudo systemctl enable --now data.mount
## Configuration réseau ## 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 ### Obtenir des adresses IPs
@ -131,7 +192,8 @@ journalctl --since "2 hours ago"
### Espaces de noms (namespaces) ### 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 ```bash
journalctl --user journalctl --user
@ -139,7 +201,8 @@ journalctl --user
### Partage de journaux entre machines ### 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 : Installation :
@ -157,7 +220,9 @@ sudo systemctl enable --now systemd-journal-remote
### Chiffrement de disque ### 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 ```bash
echo 'cryptdata UUID=xxx none luks' | sudo tee -a /etc/crypttab 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) ### 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) : 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 ### 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 ```bash
sudo debootstrap stable /var/lib/machines/deb sudo debootstrap stable /var/lib/machines/deb
@ -197,7 +264,8 @@ sudo systemd-nspawn -D /var/lib/machines/deb
### Virtualisation ### 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 ```bash
machinectl start nom_machine machinectl start nom_machine
@ -205,7 +273,9 @@ machinectl start nom_machine
## Gestion des secrets ## 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 : Exemple :
@ -219,7 +289,8 @@ Environment=API_TOKEN=%d/token
### Systèmes dynamiques : gestion des erreurs dans les services ### 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 ```ini
[Service] [Service]
@ -229,7 +300,8 @@ RestartSec=5s
### Administration à distance ### 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 ```bash
systemctl --host user@machine status nginx systemctl --host user@machine status nginx