« Minuteur - systemd » : différence entre les versions
(Page créée avec « Category:systemd Category:service ordonnancement ''Systemd'' permet de créer des unités de type ''timer'' permettant d'ordonnancer des tâches au même titre que Cron. Ils s'appuient sur les services standards pour fonctionner et doivent porter le même nom que celui à exécuter automatiquement. Pour la compréhension générale de la fonctionnalité, vous pouvez vous référer aux sources en bas de page. Dans notre cas, un exemple sera... ») |
(Ajout de la commande permettant de lister les minuteurs) |
||
(2 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 20 : | Ligne 20 : | ||
Type=oneshot | Type=oneshot | ||
ExecStart=rsync -av --progress --delete-after fichiers_dav/ www-data@%i:/ | ExecStart=rsync -av --progress --delete-after fichiers_dav/ www-data@%i:/ | ||
RemainAfterExit= | RemainAfterExit=no | ||
</syntaxhighlight> | |||
Il est très important que le service ne soit pas à l'état ''active'' lorsque le minuteur se déclenchera. Si tel est le cas, ce dernier passera sa programmation (''Trigger'') à ''n/a'' et n'exécutera jamais la tâche. | |||
[Install] | Pour se faire, plusieurs mesures sont mises en œuvres. L'absence de directive <syntaxhighlight lang="bash" inline>[Install]</syntaxhighlight> au service empêche la possibilité de l'activer manuellement au démarrage du système (il est alors totalement dépendant du minuteur). Le paramètre <syntaxhighlight lang="bash" inline>RemainAfterExit</syntaxhighlight> est quant à lui passé à ''no'' afin de ne pas garder le service actif après exécution. | ||
</syntaxhighlight> | |||
Création du minuteur associé | Création du minuteur associé | ||
Ligne 40 : | Ligne 41 : | ||
WantedBy=timers.target | WantedBy=timers.target | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Le paramètre <syntaxhighlight lang="bash" inline>OnCalendar</syntaxhighlight> accepte les données suivantes : | |||
* '''minutely''' : *-*-* *:*:00 | |||
* '''hourly''' : *-*-* *:00:00 | |||
* '''daily''' : *-*-* 00:00:00 | |||
* '''monthly''' : *-*-01 00:00:00 | |||
* '''weekly''' : Mon *-*-* 00:00:00 | |||
* '''yearly''' : *-01-01 00:00:00 | |||
* '''quarterly''' : *-01,04,07,10-01 00:00:00 | |||
* '''semiannually''' : *-01,07-01 00:00:00 | |||
Une date complète peut être donnée. Différents exemples sont décrits dans la [https://www.freedesktop.org/software/systemd/man/systemd.time.html page de manuel]. | |||
Mise à disposition des éléments à ''Systemd'' | Mise à disposition des éléments à ''Systemd'' | ||
Ligne 53 : | Ligne 66 : | ||
systemctl start synchro_fichiers@galera2.timer | systemctl start synchro_fichiers@galera2.timer | ||
systemctl start synchro_fichiers@galera3.timer | systemctl start synchro_fichiers@galera3.timer | ||
Lister les minuteurs | |||
systemctl list-timers | |||
==Sources== | ==Sources== |
Dernière version du 30 août 2023 à 20:28
Systemd permet de créer des unités de type timer permettant d'ordonnancer des tâches au même titre que Cron. Ils s'appuient sur les services standards pour fonctionner et doivent porter le même nom que celui à exécuter automatiquement.
Pour la compréhension générale de la fonctionnalité, vous pouvez vous référer aux sources en bas de page. Dans notre cas, un exemple sera plus parlant. Celui-ci vise à exécuter une commande de synchronisation Rsync à une heure donnée tous les jours de l'année. Un service modèle permettra de réutiliser la même commande de synchronisation pour plusieurs machines et un minuteur (timer) les déclenchera au moment voulu.
Création du répertoire d'accueil des unités personnalisées de l'utilisateur
mkdir -p /usr/local/etc/systemd/system
Création d'un service modèle
vim /usr/local/etc/systemd/system/synchro_fichiers@.service
[Unit]
Description=Synchronisation des fichiers de Mediawiki
After=network.target
[Service]
Type=oneshot
ExecStart=rsync -av --progress --delete-after fichiers_dav/ www-data@%i:/
RemainAfterExit=no
Il est très important que le service ne soit pas à l'état active lorsque le minuteur se déclenchera. Si tel est le cas, ce dernier passera sa programmation (Trigger) à n/a et n'exécutera jamais la tâche.
Pour se faire, plusieurs mesures sont mises en œuvres. L'absence de directive [Install]
au service empêche la possibilité de l'activer manuellement au démarrage du système (il est alors totalement dépendant du minuteur). Le paramètre RemainAfterExit
est quant à lui passé à no afin de ne pas garder le service actif après exécution.
Création du minuteur associé
vim /usr/local/etc/systemd/system/synchro_fichiers@.timer
[Unit]
Description=Exécution journalière de la synchronisation des fichiers Mediawiki
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
Le paramètre OnCalendar
accepte les données suivantes :
- minutely : *-*-* *:*:00
- hourly : *-*-* *:00:00
- daily : *-*-* 00:00:00
- monthly : *-*-01 00:00:00
- weekly : Mon *-*-* 00:00:00
- yearly : *-01-01 00:00:00
- quarterly : *-01,04,07,10-01 00:00:00
- semiannually : *-01,07-01 00:00:00
Une date complète peut être donnée. Différents exemples sont décrits dans la page de manuel.
Mise à disposition des éléments à Systemd
ln -s /usr/local/etc/systemd/system/synchro_fichiers@.service /etc/systemd/system/ ln -s /usr/local/etc/systemd/system/synchro_fichiers@.timer /etc/systemd/system/
Rechargement du gestionnaire de configuration de Systemd
systemctl daemon-reload
Activation des minuteurs
systemctl enable synchro_fichiers@galera2.timer systemctl enable synchro_fichiers@galera3.timer systemctl start synchro_fichiers@galera2.timer systemctl start synchro_fichiers@galera3.timer
Lister les minuteurs
systemctl list-timers