Aller au contenu

UNIX : exemple de « lock » afin d’éviter des exécutions parallèle de script

Changer les commandes en rouge avec vos commandes 🙂

En bref on crée un fichier temporaire appelé myFileLocked.lck qu’on tentera de verrouiller 31 fois toutes les 10 Secondes .

Si pour une raison quelconque que le verrou ne s’enlève pas le fichier se déverrouille au pour de 300 seconde

#!/bin/bash

##[LOCK:START]
LockFile=/var/tmp/myFileLocked.lck

echo "[INFO][LOCK] [$$] $(date)] Lock Try"

# SAMPLE : For prod : lockfile -10 -r 31 -l 3OO $LockFile
lockfile -10 -r 31 -l 3OO $LockFile
rc=$?
if (( $rc )) ; then
echo "[ERROR][LOCK]: Lock operation to $LockFile fail with ($rc)" ;
echo "[ERROR][LOCK]: Exit 11" ;
exit 11;
fi

echo "[INFO][LOCK] [$$] $(date)] Lock Get"


##[LOCK:EXECUTE CMD]
echo 'Push my CMD here'
sleep 10


##[LOCK:END]
echo "[INFO][LOCK] [$$] $(date)] Lock Release"
rm -f $LockFile

echo "[INFO][LOCK] [$$] $(date)] Exit"

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *