Vérification toutes les x secondes bash sans CRON
Lorsque l'utilisation de CRON n'est pas permise, il faut trouver des solutions tierses
26/08/2021

L'utilisation d'une tâche CRON n'est pas toujours permise ou accessible en fonction de l'organisation dans laquelle on se trouve, dans ce cas, il est interessant de se pencher sur une autre solution, le lancement d'un terminal avec une vérification de la dernière modification peut être une solution adéquate en fonction de la durée entre 2 relances.
Bash permet l'exécution de scripts lors de son lancement grace au fichier .bashrc
, ainsi il est possible de lancer une commande à chaque lancement d'un nouveau terminal, ceci couplé à une vérification du temps écoulé depuis le dernier lancement permet l'utilisation d'un ersatz de CRON.
#!/bin/bash | |
# to add into a .bashrc file to check at each launch if there is an update needed | |
needUpdate() | |
{ | |
FILE=$defaultPath/scripts/lastUpdate | |
if [ ! -f "$FILE" ]; then | |
touch "$FILE" && echo "Fichier créé" || exit 0 | |
fi | |
OLDTIME=36000 | |
#36000s = 10h | |
CURTIME=$(date +%s) | |
FILETIME=$(date -r scripts/lastUpdate +%s) | |
TIMEDIFF=$(expr $CURTIME - $FILETIME) | |
# Check if file older | |
if [ $TIMEDIFF -gt $OLDTIME ]; then | |
echo "Validé le $date" > $FILE | |
$("$defaultPath"/scripts/update.sh) | |
fi | |
} | |
needUpdate |
Ici on insère donc ce morceau de code dans le fichier .bashrc
en pensant à y faire appel après sa définition, ainsi en réglant la variable OLDTIME, il est possible d'éxecuter, dans le cas où la durée est dépassée le script update.sh dans notre cas. Celui-ci pourra par la suite être changé par n'importe quelle commande bash.