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 »
sudo vi /etc/systemd/system/copy.service
Contenu du fichier de service
[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
#!/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 »
sudo vi /etc/systemd/system/copy.timer
Contenu du fichier
[Unit]
Description=Run service every 2 minutes
[Timer]
OnCalendar=*:0/2
Quelques commandes utiles
# 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.
# Pour démarrer le timer
sudo systemctl start copy.timer
# Pour l'arrêter
sudo systemctl stop copy.timer
Voir la documentation :
https://coreos.com/os/docs/latest/scheduling-tasks-with-systemd-timers.html