From 56173e9d1ca86f7734afb81740fad10ccfba54b5 Mon Sep 17 00:00:00 2001 From: deajan Date: Wed, 17 Aug 2016 10:24:27 +0200 Subject: [PATCH] Improved batch runner --- CHANGELOG.md | 9 ++++++++- dev/common_batch.sh | 42 ++++++++++++++++++++++-------------------- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2498d68..ebb48d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,9 +10,16 @@ CHANGELOG README: FreeBSD execution needs mailer (not found), sudo missing, bash needed, sed missing (see if StripQuotes mandatory) +- Improved batch runner + - Batch runner works for directories and direct paths + - Fixed batch runner does not rerun obackup on warnings only + - Code compliance + - More clear semantic + ! doc reruns +!- better explanation of max-reruns (is actually runs) - Made keep logging value configurable and not mandatory - Fixed handling of processes in uninterruptible sleep state -! -preserve options +! -preserve options (+preflight check) - Code cleanup - Refactored waiting functions diff --git a/dev/common_batch.sh b/dev/common_batch.sh index a7fb5bd..9c146bd 100755 --- a/dev/common_batch.sh +++ b/dev/common_batch.sh @@ -3,7 +3,7 @@ SUBPROGRAM=[prgname] PROGRAM="$SUBPROGRAM-batch" # Batch program to run osync / obackup instances sequentially and rerun failed ones AUTHOR="(L) 2013-2016 by Orsiris de Jong" CONTACT="http://www.netpower.fr - ozy@netpower.fr" -PROGRAM_BUILD=2016081701 +PROGRAM_BUILD=2016081702Xo ## Runs an osync /obackup instance for every conf file found ## If an instance fails, run it again if time permits @@ -69,12 +69,6 @@ function CheckEnvironment { else SUBPROGRAM_EXECUTABLE=$(type -p $SUBPROGRAM.sh) fi - - ## Check for CONF_FILE_PATH - if [ ! -d "$CONF_FILE_PATH" ]; then - Logger "Cannot find conf file path $CONF_FILE_PATH" "CRITICAL" - Usage - fi } function Batch { @@ -85,15 +79,23 @@ function Batch { local confFile local result - ## Get list of .conf files - for confFile in "$CONF_FILE_PATH/*.conf" - do - if [ "$runList" == "" ]; then - runList="$confFile" - else - runList=$runList" $confFile" - fi - done + ## Check for CONF_FILE_PATH + if [ -d "$CONF_FILE_PATH" ]; then + ## Get list of .conf files + for confFile in $CONF_FILE_PATH/*.conf + do + if [ "$runList" == "" ]; then + runList="$confFile" + else + runList=$runList" $confFile" + fi + done + if [ -f "$CONF_FILE_PATH" ] && [ "${CONF_FILE_PATH##*.}" == "conf" ]; then + runList="$CONF_FILE_PATH" + else + Logger "Cannot find conf file path [$CONF_FILE_PATH]." "CRITICAL" + Usage + fi while ([ $MAX_EXECUTION_TIME -gt $SECONDS ] || [ $MAX_EXECUTION_TIME -eq 0 ]) && [ "$runList" != "" ] && [ $MAX_RUNS -gt $runs ] do @@ -134,8 +136,8 @@ function Usage { echo "" echo "[OPTIONS]" echo "--path=/path/to/conf Path to osync / obackup conf files, defaults to /etc/osync or /etc/obackup" - echo "--max-reruns=X Number of runs max for failed instances, (defaults to 3)" - echo "--max-exec-time=X Retry failed instances only if max execution time not reached (defaults to 36000 seconds). Set to 0 to bypass execution time check." + echo "--max-runs=X Number of max runs per instance, (defaults to 3)" + echo "--max-exec-time=X Retry failed instances only if max execution time not reached (defaults to 36000 seconds). Set to 0 to bypass execution time check" echo "--no-maxtime Run osync / obackup without honoring conf file defined timeouts" echo "--dry Will run osync / obackup without actually doing anything; just testing" echo "--silent Will run osync / obackup without any output to stdout, used for cron jobs" @@ -162,8 +164,8 @@ do --path=*) CONF_FILE_PATH=${i##*=} ;; - --max-reruns=*) - MAX_RERUNS=${i##*=} + --max-runs=*) + MAX_RUNS=${i##*=} ;; --max-exec-time=*) MAX_EXECUTION_TIME=${i##*=}