Outils pour utilisateurs

Outils du site


systemd

Systemd

biblio

WTF ?

Usine à gaz remplaçant la simplicité (et les limitations) d'init. En passe d'être utilisé sur la majorité des distributions.

Permet notamment de lancer des services à la demande (cf xinetd), de paralléliser le lancement des services, de gérer les montages …

  1. unitfile : identifiées par leur extension. contrôle différentes partie (mountpoint, services, “runlevel”). Se trouvent dans /usr/lib/systemd/system, /etc/systemd/system . Utiliser ce dernier répertoire pour la personnalisation.

systemctl tout court

Affiche la liste des units activés et leur état

De la même manière qu'avec init, on peut change de target (systemctl rescue) ou arrêter (systemctl halt) etc le système.

Dépendances

Lister les dépendances d'un service: systemctl –list-dependencies service

Lister les unités actives pour une target systemctl –list-dependencies target

systemd-analyze

Permet de faire un concours de qui démarre le plus rapidement.

systemd-analyze tout court résume le temps de démarrage du système

systemd-analyze blame tri par durée de démarrage les unités.

systemd-analyze plot > graph.svg va générer un joli graphique représentant la même information

Désactiver ctrl+alt+del

Avant c'était /etc/inittab, maintenant il faut faire un lien symbolique:

systemctl mask ctrl-alt-del.target

Groupes de service et gestion des ressources

Les services systemd sont rassemblés dans des cgroups, qu'il est possible d'interroger à l'aide des commandes systemd-cgls et systemd-cgtop

Les unités de type scope permettent de regrouper des services en vue de gérer les ressources utilisées.

les unités de type slice permettent de ranger hiérarchiquement les ressources d'un groupe de processus

Recharger le daemon systemd

Nécessaire quand on modifie un script d'init par exemple.

systemctl daemon-reload

Gestion des services

Via des unit-files de type et d'extension service

Via la commande systemctl CMD servicename

avec CMD:

  1. status
  2. start, stop, restart, try-restart, reload
  3. is-active
  4. enable, disable
  5. is-enabled

Afficher la liste des services en cours de fonctionnement:

systemctl list-units --type service

Afficher la liste des services actifs / inactifs au démarrage:

systemctl list-unit-files --type service

remplacer cron

En mettant en place une unité de type timer:

[Unit]
Description=daily datetime sync
[Timer]
OnCalendar=daily
#voir man systemd.time pour plus de détail.
# par ex pour une exécution toutes les heures: OnCalendar=*-*-* *:00:00
[Install]
WantedBy=multiusers.target

L'inconvénient de cette méthode c'est quelle nécessite d'avoir une unité de type service avec le même nom que l'unité de type timer ci-dessus, qui décrit la tâche à planifier.

Par exe:

[Unit]
Description=backup with borg

[Service]
Type=oneshot
ExecStart=/root/bin/backup.sh

remplacer fstab

En mettant en place une unité de type mount:

[Mount]
What=/dev/md0
Where=/srv
Type=xfs
Options=defaults,auto

[Install]
WantedBy=multi-user.target 

Faire son propre script d'init

Créer un fichier dans /etc/systemd/system avec l'extension .service et le contenu suivant (exemple):

[Unit]
Description=script de démarrage foo
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=notify
WorkingDirectory=/opt/bin
ExecStart=/opt/bin/bundleApps start

[Install]
WantedBy=multi-user.target

S'aider des pages de man systemd.service , systemd.unit, systemd.exec (chaque [en-tete] est documenté)

Relancer systemd ( systemctl daemon-reload )

Activer et lancer le service (systemctl enable –now bundleApps )

Le mieux est d'étudier directement les exemples ici

Définir un point de montage

samba

cat /etc/systemd/system/mnt-Rotam.mount                                                             (0)(/etc/systemd/system)(11:27 ven. 30)
[Mount]
What=//rotamfrsvr02/IT
Where=/mnt/Rotam
Type=cifs
Options=credentials=/home/tom/Documents/Opendoor/Clients/Rotam/cred
StopWhenUnneeded=true

Pour un montage automatique, rajouter le fichier /etc/systemd/system/mnt-Rotam.automount:

cat /etc/systemd/system/mnt-Rotam.automount                                                         (0)(/etc/systemd/system)(11:27 ven. 30)
[Automount]
Where=/mnt/Rotam

# vim: set filetype=dokuwiki:

systemd.txt · Dernière modification: 2017/02/28 22:38 (modification externe)