Pour exécuter un script bash à intervalle régulié sur un CoreOS, on peut utiliser les systemd timers.
L’exemple ci-dessous copie un fichier vers un répertoire toutes les 2 minutes. Mais vous pouvez exécuter le script que vous voulez.
Créer le fichier service. Il doit être créé dans ce répertoire, et son nom doit se terminer par « .service »
1 | sudo vi /etc/systemd/system/copy .service |
Contenu du fichier de service
1 2 3 4 5 6 | [Unit] Description=Copy files from a folder to another [Service] Type=oneshot ExecStart=/usr/bin/sh -c '/home/core/script/copy' |
Le script appelé copy qui s’exécute dans le service
1 2 3 | #!/bin/bash # Copy the hello.png file to home folder cp /tmp/hello .png /home/core/ |
Créez le timer. Il faut le mettre dans le même répertoire, et son nom doit se terminer par « .timer »
1 | sudo vi /etc/systemd/system/copy .timer |
Contenu du fichier
1 2 3 4 5 | [Unit] Description=Run service every 2 minutes [Timer] OnCalendar=*:0/2 |
Quelques commandes utiles
1 2 | # Pour lister tous les timers sudo systemctl list-timers --all |
Cela permet de savoir quand le timer va s’exécuter à nouveau, et quand il s’est exécuté la dernière fois.
1 2 | # Pour démarrer le timer sudo systemctl start copy.timer |
1 2 | # Pour l'arrêter sudo systemctl stop copy.timer |
Voir la documentation :
https://coreos.com/os/docs/latest/scheduling-tasks-with-systemd-timers.html