Comment exécuter un script à intervalle régulier sur un CoreOS ?

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

Comment modifier à chaud la configuration de logback ?

logback

Pour pouvoir modifier à chaud la configuration de logback,
il faut modifier la balise « configuration » du fichier logback.xml et rajouter scanPeriod.

par exemple

<configuration scan="true" scanPeriod="5 seconds">

Par défaut, la période de scan des modifs est d’une minute. Il est possible de la modifier comme ici à 5 secondes.
Vous pouvez maintenant modifier ce que vous voulez, le niveau de log, les appenders, etc …

documentation :
https://logback.qos.ch/manual/configuration.html#autoScan