L’objectif de ce groupe de travail était de monter en compétences sur l’utilisation/l’intégration des différents composants de systemd à savoir : systemd-networkd, systemd-resolved, journarld, systemd-nspawn…

En effet, actuellement sur EOLE 2.6, systemd gère uniquement les services, il se contente d’assurer le passage de System V à systemd.

Qu’est ce que systemd ?

systemd est un système d’initialisation et un daemon qui a été spécifiquement conçu pour le noyau Linux comme alternative à System V.
Il a pour but d’offrir un meilleur cadre pour la gestion des dépendances entre services, de permettre le chargement en parallèle des services au démarrage, et de réduire les appels aux scripts shell. Le projet a été lancé par Lennart Poettering en 2010 et publié sous licence GNU LGPL version 2.12. Le nom de ce programme vient de « system daemon » : le daemon du système.

Source Wikipédia : https://fr.wikipedia.org/wiki/Systemd

Composants de systemd – image de Claudelepoisson sous licence CC by-sa 3.0

Le site officiel du projet : https://wiki.freedesktop.org/www/Software/systemd/

Exécution d’un script à intervalle régulier à l’aide de systemd-timer

systemd-timer VS cron

Cela ne semble pas évident au premier abord, mais on dirait bien qu’on pourrait remplacer cron uniquement avec des unités de configuration systemd !

Avantages de systemd-timer

  • L’option Persistent=True permet le rattrapage automatique des actions non réalisées (si le serveur a été éteint par exemple)
  • Énormément de possibilités pour le déclenchement et la régularité des événements (exemple : 15 minutes après le démarrage du serveur puis toutes les semaines)

Inconvénients de systemd-timer

  • Il faut créer 2 fichiers : service et timer
  • Pas d’envoi de mail automatique en cas d’erreur

Sources :

Création et exécution d’un script à intervalle régulier

Créer un script de test à exécuter :

root@eolebase:~# cat /root/coucou
#!/bin/bash
echo "coucou" | wall -n

Déclarer le script dans un service en créant le fichier wall.service dans /etc/systemd/system/ :

[Unit]
Description=Affichage d'un message

[Service]
ExecStart=/root/coucou
Type=oneshot

Déclarer le timer associé dans le fichier wall.timer dans /etc/systemd/system/wall.timer :

[Unit]
Description=Affiche le message toutes les minutes

[Timer]
OnCalendar=minutely

[Install]
WantedBy=timers.target

Activer et démarrer le timer :

root@eolebase:~# systemctl enable wall.timer

root@eolebase:~# systemctl start wall.timer

Le script est lancé toutes les minutes !

Afficher la liste des timers à l’aide de la commande systemctl list-timers :

root@eolebase:~# systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
mer. 2017-11-22 15:18:00 CET 35s left mer. 2017-11-22 15:17:11 CET 13s ago wall.timer wall.service
jeu. 2017-11-23 12:02:41 CET 20h left mer. 2017-11-22 12:02:41 CET 3h 14min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service