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
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