From a21d62dfcee075c3fc49edb24c9e4c37e14d722d Mon Sep 17 00:00:00 2001 From: Ville Rantanen Date: Fri, 8 Sep 2023 08:37:10 +0300 Subject: [PATCH] runif for lockutil --- files/lock-util | 109 +++++++++++++++++++++++++++--------------------- 1 file changed, 62 insertions(+), 47 deletions(-) diff --git a/files/lock-util b/files/lock-util index d9515f4..c5617b2 100755 --- a/files/lock-util +++ b/files/lock-util @@ -1,83 +1,98 @@ #!/bin/bash +VERSION=230908.0 + _help() { echo ' Usage: lock-util {lock-file} [-v] [command] [args] Commands: create exist ( return 0 if lock exists ) - old [age in seconds] ( return 0 if file younger than [args] seconds or file not present ) + old [age in seconds] ( return 0 if file older than [args] seconds or file not present ) + runif [age in seconds] ( old + create, if file not exist, or older than [arg], then touch file and return 0, else 1 ) remove -v as first argument sets very verbose mode - -' + + ' } LOCKFILE="$1" -[[ "$2" = "-v" ]] && { - VERBOSE=on - COMMAND="$3" - ARG="$4" -} || { - COMMAND="$2" - ARG="$3" +[[ "$2" = "-v" ]] && { + VERBOSE=on + COMMAND="$3" + ARG="$4" + } || { + COMMAND="$2" + ARG="$3" } BOXES=cat which boxes &>/dev/null && BOXES="boxes -d shell" _create() { - LOCKDIR=$( dirname "$LOCKFILE" ) - mkdir -p "$LOCKDIR" - touch "$LOCKFILE" + LOCKDIR=$( dirname "$LOCKFILE" ) + mkdir -p "$LOCKDIR" + touch "$LOCKFILE" } _exist() { - test -f "$LOCKFILE" + test -f "$LOCKFILE" } _remove() { - rm "$LOCKFILE" + rm "$LOCKFILE" } [[ $COMMAND = "create" ]] && { - _exist && { - [[ "$VERBOSE" = "on" ]] && echo "LOCK FILE EXISTS" | $BOXES - exit 1 - } - _create - ec=$? - [[ "$VERBOSE" = "on" ]] && [[ $ec -eq 0 ]] && echo "LOCK FILE CREATED" | $BOXES - [[ "$VERBOSE" = "on" ]] && [[ $ec -ne 0 ]] && echo "UNABLE TO CREATE LOCK FILE" | $BOXES - exit $ec + _exist && { + [[ "$VERBOSE" = "on" ]] && echo "LOCK FILE EXISTS" | $BOXES + exit 1 + } + _create + ec=$? + [[ "$VERBOSE" = "on" ]] && [[ $ec -eq 0 ]] && echo "LOCK FILE CREATED" | $BOXES + [[ "$VERBOSE" = "on" ]] && [[ $ec -ne 0 ]] && echo "UNABLE TO CREATE LOCK FILE" | $BOXES + exit $ec } [[ $COMMAND = "exist" ]] && { - _exist - ec=$? - [[ "$VERBOSE" = "on" ]] && [[ $ec -eq 0 ]] && echo "LOCK FILE EXISTS" | $BOXES - [[ "$VERBOSE" = "on" ]] && [[ $ec -ne 0 ]] && echo "LOCK FILE DOES NOT EXIST" | $BOXES - exit $ec + _exist + ec=$? + [[ "$VERBOSE" = "on" ]] && [[ $ec -eq 0 ]] && echo "LOCK FILE EXISTS" | $BOXES + [[ "$VERBOSE" = "on" ]] && [[ $ec -ne 0 ]] && echo "LOCK FILE DOES NOT EXIST" | $BOXES + exit $ec } -[[ $COMMAND = "old" ]] && { - _exist || { - [[ "$VERBOSE" = "on" ]] && echo "LOCK FILE MISSING" | $BOXES - exit 0 - } - [[ -z "$ARG" ]] && _help && echo "MISSING ARGUMENT" | $BOXES && exit 1 - created=$( stat -c %Y "$LOCKFILE" ) - now=$( date +%s ) - age=$(( $now - $created )) - test $ARG -lt $age - ec=$? - [[ "$VERBOSE" = "on" ]] && [[ $ec -eq 0 ]] && echo "LOCK FILE OLDER THAN $ARG s" | $BOXES - [[ "$VERBOSE" = "on" ]] && [[ $ec -ne 0 ]] && echo "LOCK FILE YOUNGER THAN $ARG s" | $BOXES - exit $ec +[[ $COMMAND = "old" ]] && { + _exist || { + [[ "$VERBOSE" = "on" ]] && echo "LOCK FILE MISSING" | $BOXES + exit 0 + } + [[ -z "$ARG" ]] && _help && echo "MISSING ARGUMENT" | $BOXES && exit 1 + created=$( stat -c %Y "$LOCKFILE" ) + now=$( date +%s ) + age=$(( $now - $created )) + test $ARG -lt $age + ec=$? + [[ "$VERBOSE" = "on" ]] && [[ $ec -eq 0 ]] && echo "LOCK FILE OLDER THAN $ARG s" | $BOXES + [[ "$VERBOSE" = "on" ]] && [[ $ec -ne 0 ]] && echo "LOCK FILE YOUNGER THAN $ARG s" | $BOXES + exit $ec } [[ $COMMAND = "remove" ]] && { - _remove + _remove + ec=$? + [[ "$VERBOSE" = "on" ]] && [[ $ec -eq 0 ]] && echo "LOCK FILE REMOVED" | $BOXES + [[ "$VERBOSE" = "on" ]] && [[ $ec -ne 0 ]] && echo "UNABLE TO REMOVE LOCK FILE" | $BOXES + exit $ec +} + +[[ $COMMAND = "runif" ]] && { + [[ -z "$ARG" ]] && _help && echo "MISSING ARGUMENT" | $BOXES && exit 1 + VERBOSE=$VERBOSE "$0" "$LOCKFILE" old "$ARG" + ec=$? + [[ $ec -eq 0 ]] && { + _exist && _remove + VERBOSE=$VERBOSE "$0" "$LOCKFILE" create ec=$? - [[ "$VERBOSE" = "on" ]] && [[ $ec -eq 0 ]] && echo "LOCK FILE REMOVED" | $BOXES - [[ "$VERBOSE" = "on" ]] && [[ $ec -ne 0 ]] && echo "UNABLE TO REMOVE LOCK FILE" | $BOXES - exit $ec + } + exit $ec } echo Command not recognized