summaryrefslogtreecommitdiffstats
path: root/bin/cron_wrapper.sh
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2012-03-15 22:02:41 +0100
committersyncer <root@plopp.spline.de>2012-03-15 22:02:41 +0100
commit6e1dd2516f260a0361d65b58509106a615d0c149 (patch)
treeffd6c02e8b1b21e3182a3ed502f8644898d4db98 /bin/cron_wrapper.sh
parent657d1fc484fa0b21b979525a92ace5c9e6f63da2 (diff)
downloadmirror-sync-6e1dd2516f260a0361d65b58509106a615d0c149.tar.gz
mirror-sync-6e1dd2516f260a0361d65b58509106a615d0c149.tar.bz2
mirror-sync-6e1dd2516f260a0361d65b58509106a615d0c149.zip
syncer scripts: move locking to cronwrapper
now lockfile-progs is used as replacement for the lockfile command of procmail
Diffstat (limited to 'bin/cron_wrapper.sh')
-rwxr-xr-xbin/cron_wrapper.sh12
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"