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

ActionCommande
Rebootsystemctl reboot
Eteindre (avec les scripts d'arret)systemctl shutdown
Eteindre (sans les scripts d'arret)systemctl poweroff
Mettre en veillesystemctl suspend
Mettre en hibernationsystemctl 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 :

Wiki Arch Linux sur systemd

Configuration d'une unité

Configuration d'un service

Les commandes suivantes sont à connaitre concernant les services :

ActionCommande
Voir l'état d'un servicesystemctl status service
Lancer un servicesystemctl start service
Arrêter un servicesystemctl stop service
Relancer un servicesystemctl restart service
Recharger un servicesystemctl reload service
Lancer un serice au démarragesystemctl enable service
Ne pas lancer un service au démarragesystemctl disable service
Masque un servicesystemctl mask service
Démasque un servicesystemctl unmask service