Saloperie de systemd
Systemd est une suite de blocks basiques pour construire un système Linux. Il gère le système et les services en tant que PID 1. Il a pour but d'unifier la configuration des services pour beaucoup de distributions Linux, dont la meilleure.
La commande principale pour gérer systemd est systemctl
. Nous avons déjà vu cette commande dans squid, nginx ou ssh.
Ce document ne sera qu'une ébauche suite à la complexité de systemd.
Gestion de l'alimentation éléctrique
Action | Commande |
---|---|
Reboot | systemctl reboot |
Eteindre (avec les scripts d'arret) | systemctl shutdown |
Eteindre (sans les scripts d'arret) | systemctl poweroff |
Mettre en veille | systemctl suspend |
Mettre en hibernation | systemctl hibernate |
Suspend vs Hibernate
Suspend arrête les processus et met la machine en mode basse consommation.
Hibernate déplace le contenu de la mémoire dans le swap, dit au bootloader de démarrer directement sur le bon noyau et éteint la machine. Il faut rallumer la machine pour que le noyau se recharge depuis le swap.
Services
Pour ajouter un service, dans /etc/systemd/system/
, ajouter un fichier .service
constuit de la sorte pour un service simple :
[Unit]
Description=La description du service
After=une_dépendance
[Service]
Type=simple
ExecStart=ma_commande_de_demarrage
ExecStop=ma_commande_d_arret
User=Le_user_a_utiliser_pour_lancer_le_service
Group=Le_groupe_a_utiliser_pour_lancer_le_service
AmbientCapabilities=Capabilities_a_ajouter_au_processus A_separer_avec_des_espaces
CapabilityBoundingSet=Limite_le_processus_a_ces_capabilities A_separer_avec_des_espaces
[Install]
WantedBy=multi-user.target
Par défault, User
et Group
sont ceux de l'utilisateur lançant le service donc souvent root:root.
Par exemple, ce wiki se lance grâce à un service :
[Unit]
Description=mdBook wiki
After=network.target
[Service]
Type=simple
ExecStart=/home/pi/mdBook/target/release/mdbook serve /home/mdbook/doc/wiki-salope -n xxx.xxx.xxx.xxx -p xxxx
[Install]
WantedBy=mutli-user.target
Les services peuvent avoir des configurations très compliquées. Vous trouverez ci-dessous des références :
Les commandes suivantes sont à connaitre concernant les services :
Action | Commande |
---|---|
Voir l'état d'un service | systemctl status service |
Lancer un service | systemctl start service |
Arrêter un service | systemctl stop service |
Relancer un service | systemctl restart service |
Recharger un service | systemctl reload service |
Lancer un serice au démarrage | systemctl enable service |
Ne pas lancer un service au démarrage | systemctl disable service |
Masque un service | systemctl mask service |
Démasque un service | systemctl unmask service |