Outils pour utilisateurs

Outils du site


systemd

Systemd

Systemd, c'est un sujet polémique. Est-ce que c'est bien, est-ce que c'est pas bien, à quoi ça sert… Je ne rentre pas dedans, de toutes façons j'ai pas le niveau pour apporter un quelconque argument.
Par contre, on le rencontre partout par défaut, donc faut savoir l'utiliser. voilà, ça c'est à ma portée, du moins pour des choses simples :

gérer des services

Pour autoriser des services au démarrage, par exemple systemd-networkd, il faut taper la commande :

systemctl enable systemd-networkd
# parfois on peut préciser :
systemctl enable systemd-networkd.service

Pour empecher un service de se lancer au démarrage :

systemctl disable gdm

Pour savoir si un service est lancé et si il se lance au démarrage :

systemctl status gdm

Executer au démarrage

On souhaite executer un programme au démarrage de l'ordinateur et/ou gérer le programme comme un démon (pas de terminal qui traine, pas de screen bien grouik).

Il faut donc créer un fichier super_Nom.service qu'on pourra mettre dans /etc/systemd/system

[Unit]
Description=Gogs (Go Git Service)
After=syslog.target
After=network.target
After=mysqld.service
 
[Service]
Type=simple
User=git
Group=git
WorkingDirectory=/path/to/working/dir
ExecStart=/absolute/path/to/exec param
Restart=always
Environment=USER=git HOME=/home/git
 
[Install]
WantedBy=null-user.target

Ensuite, un petit systemctl <service> enable et le tour est joué

Executer en tant qu'user

Ce qu'on a vu jusqu'à présent est à executer en root ou via sudo, pour gérer le système dans sa totalité.

Mais si on souhaite pouvoir démarrer un service au niveau USER, par exemple au démarrage de la session, alors il faut s'intéresser au côté USER de systemd.

Les fichiers de conf (service, timer…) sont dans ~.config/systemd/user/, exemple pour démarrer un service on crée le fichier nextcloud-sync.service :

[Unit]
Description=Nextcloud Sync
 
[Service]
Type=simple
ExecStart=COMMANDE AVEC ARGUMENTS
TimeoutStartSec=300
Slice=nextcloud-sync.slice  (facultatif, appelle un slice pour contrôler les ressources affectées)
 
[Install]
WantedBy=default.target

Ensuite, on pilote systemd en mode utiliseateur avec le flag –user : systemctl –user enable nextcloud-sync.service, start, stop, etc.

Les timers

source

Pour remplacer les crontab, et executer des scripts à intervalle régulier.

On crée le fichier nextcloud-sync.timer qu'on met dans /etc/systemd/system ou dans ~.config/systemd/user/ selon que le timer soit à contrôler par un user ou par root.

[Unit]
Description=Run Nextcloud Sync every 5 minutes
Requires=nextcloud-sync.service
 
[Timer]
Unit=nextcloud-sync.service
OnUnitInactiveSec=5m
RandomizedDelaySec=5m
AccuracySec=1s
 
[Install]
WantedBy=timers.target

et on démarre le timer avec systemctl –user enable nextcloud-sync.timer puis systemctl –user start nextcloud-sync.timer

Les slices

source

Les slices servent à limiter la conso CPU et mémoire. Il faut créer un fichier config à la syntaxe de systemd, et les faire appeler par un service.

Par exemple faisons un slice pour le service nextcloud-sync.service défini dans le paragraphe “Executer en tant qu'user”. On crée le fichier nextcloud-sync.slice qu'on place dans ~/.config/systemd/user/ :

[Unit]
Description=Nextcloud Sync Slice
DefaultDependencies=no
Before=slices.target
 
[Slice]
CPUQuota=30%
MemoryMax=2G

Ne pas oublier d'y faire mention dans le fichier nextcloud-sync.service !

systemd.txt · Dernière modification : 2025/01/07 20:19 de luc