Public-Helperscripts/distributed_cron.sh

39 lines
794 B
Bash

#!/usr/bin/env bash
# Author: H2 invent GmbH <support@h2-invent.com>
# License: AGPLv3
# Usage: Use the helper script in cronjobs in hosts or containers.
# The cron_lock can be shared so the job will only be executed one.
TIME=$(shuf -i 0-900 -n1)
sleep 0.$TIME
echo "Sleep for 0.$TIME"
echo "Checking cron_lock file"
FILE=$1
if [ ! -f $FILE ]
then
echo $(hostname) > $FILE
echo "$(date) -- START CRON_LOCK -- $(hostname)" >> $FILE.log
$2
if [ $? -ne 0 ]
then
echo "FAILED -- $(date) -- $(hostname)" >> $FILE.log
else
echo "OK -- $(date) -- $(hostname)" >> $FILE.log
fi
else
echo "Other Server is running cron job"
fi
sleep 10.$TIME
if [ -f $FILE ]
then
echo "$(date) -- REMOVE CRON_LOCK -- $(hostname)" >> $FILE.log
rm $FILE
fi