runif for lockutil
This commit is contained in:
109
files/lock-util
109
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
|
||||
|
||||
Reference in New Issue
Block a user