diff options
Diffstat (limited to 'bin/cron_wrapper.sh')
-rwxr-xr-x | bin/cron_wrapper.sh | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/bin/cron_wrapper.sh b/bin/cron_wrapper.sh index 4e25802..82dea79 100755 --- a/bin/cron_wrapper.sh +++ b/bin/cron_wrapper.sh @@ -39,6 +39,7 @@ CRON_SCRIPT_BASENAME="$(basename ${CRON_SCRIPT} ".sh")" CRON_SCRIPT_LOGNAME="${CRON_SCRIPT_BASENAME#sync-}" ERROR_LOG="/var/log/sync/${CRON_SCRIPT_LOGNAME}_error.log" LOG="/var/log/sync/${CRON_SCRIPT_LOGNAME}.log" +LOCKFILE="/var/lock/$(basename $0)" create_and_check_log "${ERROR_LOG}" create_and_check_log "${LOG}" @@ -49,6 +50,12 @@ ERROR_TMP=$(mktemp -t "${CRON_SCRIPT_BASENAME}.XXXXXXXX") # damit der cronscript dateiname nicht mehr enthalten ist shift 1 +# locking, cron script should not executed while the last +# instance is running +lockfile-create "$LOCKFILE" || exit 1 +lockfile-touch "$LOCKFILE" & +TOUCH="$!" + # log header LOG_HEADER="-------------------- $(date) --------------------" echo "${LOG_HEADER}" >> "${LOG}" @@ -58,7 +65,6 @@ ${CRON_SCRIPT} $@ >> "${LOG}" 2> "${ERROR_TMP}" if [ $(grep -v "^\s*$" "${ERROR_TMP}" | wc -l) -gt 0 ] then - if [ "$(date -r${ERROR_LOG} +%F)" != "$(date +%F)" ] then cat "${ERROR_LOG}" @@ -72,3 +78,7 @@ then fi rm "${ERROR_TMP}" + +# cleanup lockfile +kill "$TOUCH" +lockfile-remove "$LOCKFILE" |